unity敌人追击玩家,会躲避障碍,脚本代码
时间: 2024-10-17 11:05:18 浏览: 63
在Unity中实现一个简单的敌对角色追击玩家并避开障碍物的脚本,你可以使用C#编写。以下是一个基础示例:
```csharp
using UnityEngine;
public class PlayerChaser : MonoBehaviour
{
// 定义玩家和敌人的引用
public Transform player;
public Transform enemy;
private float chaseDistance = 5f; // 追击距离
// Update is called once per frame
void Update()
{
// 计算目标位置
Vector3 targetPosition = player.position + Vector3.up * chaseDistance;
// 检查是否有障碍物
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit))
{
// 如果有障碍物,调整方向避开它
targetPosition = hit.point + new Vector3(hit.normal.x, 0f, hit.normal.z) * chaseDistance * 0.9f; // 避免直接撞到障碍
}
// 设置移动速度
float speed = 5f;
Vector3 direction = (targetPosition - transform.position).normalized;
transform.position += direction * speed * Time.deltaTime;
// 如果靠近了玩家,停止追击
if (Vector3.Distance(transform.position, player.position) < chaseDistance)
{
stopChasing();
}
}
// 停止追击
void stopChasing()
{
GetComponent<Rigidbody>().velocity = Vector3.zero;
}
}
```
在这个脚本中,敌人会朝向玩家并根据`chaseDistance`设定的距离移动。如果检测到前方有障碍物,它会稍微偏离方向避开。当敌人接近玩家时,会停止追击。
阅读全文