5396人加入学习
(11人评价)
Unity2.5D RTS案例-云端战纪

制作完成于2019年11月4日,基于Unity2018.3

价格 ¥ 288.00
该课程属于 Unity - A计划(永久有效期) 请加入后再学习

加个目标类型的枚举好理解一些

[展开全文]

敌人攻击掉血方法:

1、看向目标

2、如果敌人血量下降少于0,则调用角色死亡方法

[展开全文]

1、默认持续生成新的敌人:在Start中调用InvokeRepeating方法

2、在Update中检查敌人数量是否达到上限:

如果isSpawning为true,且敌人数量达到上限,达到则CancelInvoke(); 并将isSpawning= false;

 

 

[展开全文]

随机生成敌人,并赋值位置

生成特效并生成位置

[展开全文]

1、攻击方法优化:目标移动追赶判定,意思是攻击过程中目标位置可能再次移动超出角色攻击范围,需要停止攻击并重启导航方法

如果攻击目标不为建筑,判断currentTarget是否为空。如果不为空,则将目标位置设置为当前目标位置。

- 如果目标位置和角色位置距离大于攻击距离,重启导航系统,meshAgent. isStopped = false,停止攻击动画。

如果目标超出跟踪范围(约为攻击范围2倍),则目标丢失,重置状态ResetState

- 如果在攻击范围内,持续攻击

 

[展开全文]

1、补充寻找目标的方法

如果目标不是角色,也不是塔,则默认设置目标为塔。

如果目标不是角色,但是是塔,则同时搜索附近的角色,如果有则将目标更新为角色

 

如果目标是角色:

判断目标是否为空(安全校验),如果不为空,将目标赋值为Target位置。

如果目标不存在,否则判定目标已死,重置状态。

[展开全文]

1、搜索敌人方法

在GameManager中创建所有敌人的列表List<Character> playerCharacters和List<Enemy> enemyCharacters的列表

 

GameManager中创建Character时,同时将角色添加到列表:

playerCharacters.Add(go.GetComponent<Character>());

 

遍历角色,看是否在攻击范围之内

Vector3.Distance()

 

[展开全文]

1、测试移动和攻击塔功能是否正常

2、攻击方法实现:

GameManager.Instance.DecreasePlayerHP(damage);

 

[展开全文]

1、移动状态和攻击状态切换

距离判断:Vector3.Distance(transform.position, target.transition.position)

停止移动导航:meshNav.enabled = false

状态切换:Animator.SetBool("Attacking",true)

2、Target 切换

如果角色是敌人,则默认目标是玩家的塔

如果角色是玩家,则默认目标是敌人的塔

[展开全文]

1、把角色的自动寻路组件设置为默认不开启。当角色生成并设置到正确的位置后再启用

在OnEnable方法中调用Invoke(NavMesh.Enabled,0.001f)

[展开全文]

1、给Ground添加AI-navimesh组件,选择Agent height, 点击bake

2、调整角色高度,确保能应用到导航

[展开全文]

1、给角色添加组件Ragdoll,把角色对应的子部位物体复制给Ragdoll对应部位

[展开全文]

1、增加方框选中的显示:在角色脚下增加一个圆圈,命名为selected object

[展开全文]

1、给Animator中的动画状态添加动画切换的bool值参数

2、给角色添加Player Tag

3、给角色增加一个MinimapIcon的sphere,放到角色物体的子物体

[展开全文]

1、给角色添加Capsule Collider、Nav Mesh Agent组件

2、添加动画控制器Animator, 然后将Animator赋值给角色的Animation组件。

把running动画和Attacking动画模型拖入到animator界面,增加running和Attacking的动画状态切换。

 

 

[展开全文]

Grid Layout Group和Content Size Fitter搭配使用可以自适应宽高

[展开全文]