unity敌人自动巡逻以及动画代码
时间: 2023-11-13 18:12:26 浏览: 72
敌人自动巡逻代码:
1. 在敌人的脚本中添加以下变量:
```csharp
public Transform[] patrolPoints;
public float moveSpeed;
private int currentPoint;
```
其中`patrolPoints`是一个包含所有巡逻点的数组,`moveSpeed`是敌人的移动速度,`currentPoint`是当前巡逻点的索引。
2. 在`Start()`方法中初始化`currentPoint`:
```csharp
currentPoint = 0;
transform.position = patrolPoints[currentPoint].position;
```
3. 在`Update()`方法中实现敌人自动巡逻:
```csharp
transform.position = Vector3.MoveTowards(transform.position, patrolPoints[currentPoint].position, moveSpeed * Time.deltaTime);
if (transform.position == patrolPoints[currentPoint].position)
{
currentPoint = (currentPoint + 1) % patrolPoints.Length;
}
```
这里使用`Vector3.MoveTowards()`方法实现敌人向下一个巡逻点移动,如果敌人到达了当前巡逻点,就更新`currentPoint`为下一个巡逻点。
动画代码:
1. 在敌人的脚本中添加以下变量:
```csharp
private Animator anim;
private bool isMoving;
```
其中`anim`是敌人的Animator组件,`isMoving`表示敌人是否正在移动。
2. 在`Start()`方法中初始化`anim`:
```csharp
anim = GetComponent<Animator>();
```
3. 在`Update()`方法中实现敌人移动动画:
```csharp
if (transform.position != patrolPoints[currentPoint].position)
{
isMoving = true;
}
else
{
isMoving = false;
}
anim.SetBool("isMoving", isMoving);
```
如果敌人正在移动,就将`isMoving`设置为`true`,否则设置为`false`,然后使用`anim.SetBool()`方法更新Animator中的`isMoving`参数。
注意:以上代码仅供参考,具体实现可能需要根据实际情况进行修改。