B站Unity学习笔记
链接:https://www.bilibili.com/video/BV12s411g7gU
敌人
策划![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/96a2f393c942ea791f7c290118706f53.png)
需求分析
代码实现
- 敌人马达EnemyMotorEnemyMotor类
-定义朝向目标点旋转的方法
-定义寻路的方法
-定义向前移动的方法
/// <summary>
/// 敌人马达类
/// 提供移动、旋转、寻路功能
/// </summary>
public class EnemyMotor : MonoBehaviour
{
public WayLine line;
//当前路点的索引默认是0
private int currentPointIndex;
public float moveSpeed = 5;
/// <summary>
/// 向前移动
/// </summary>
public void MovementForward()
{
this.transform.Translate(0,0,moveSpeed*Time.deltaTime);
}
/// <summary>
/// 注视旋转
/// </summary>
/// <param name="point">需要注视的目标点</param>
public void LookRotation(Vector3 targetPoint)
{
//当前物体注视目标点旋转
this.transform.LookAt(targetPoint);
}
/// <summary>
/// 寻路,沿路线(Vector3[])移动
/// </summary>
/// <returns>返回寻路结果</returns>
public bool Pathfinding()
{
//return false; 到达终点,无需寻路
//return true; 需要寻路
if (line.WayPoints == null ||currentPointIndex>= line.WayPoints.Length) return false;
//如果到达目标点(判断 当前位置 和 目标点之间的距离(Vector3.Distance))
//更新目标点(向下一个路点移动)
//朝向目标点
LookRotation(line.WayPoints[currentPointIndex]);
//向前移动
MovementForward();
if (Vector3.Distance(this.transform.position, line.WayPoints[currentPointIndex])<0.1f)
{
currentPointIndex++;
}
return true;
}
2.敌人状态信息EnemyStatusInfo类
- 定义变量:当前生命值,当前生命值
- 定义方法:受伤,死亡。
/// <summary>
/// 敌人状态信息
/// 定义敌人信息,提供受伤、死亡功能;
/// </summary>
public class EnemyStatusInfo : MonoBehaviour
{
public EnemySpawn spawn;
//当前血量
public float enemyHP = 200;
//最大血量
public float maxHP = 200;
/// <summary>
/// 受伤
/// </summary>
/// <param name="amount">需要扣除的血量</param>
public void Damage(float amount)
{
//扣血
enemyHP -= amount;