Unity C# 代码,使我的 AI 无法按预期工作



我正在制作一个3D单人第一人称射击游戏,目前正在研究游戏中敌人的移动。由于这是我的第一个游戏,并且不太了解 C#,因此我按照教程进行操作:

https://www.youtube.com/watch?v=_Z1t7MNk0c4

该教程适用于2D,但表示它也适用于3D 这是我的脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class movment_shoot : MonoBehaviour {
public float speed;
public float stoppingDistance;
public float retreatDistance;
private Transform player;
void Start() {
player = GameObject.FindGameObjectWithTag("Player").transform;
}
void Update() {
if (Vector2.Distance(transform.position, player.position) > stoppingDistance) {
transform.position = Vector2.MoveTowards(transform.position, player.position, speed * 
Time.deltaTime);
} else if (Vector2.Distance(transform.position, player.position) < stoppingDistance && 
Vector2.Distance(transform.position, player.position) > retreatDistance) {
transform.position = this.transform.position;
} else if (Vector2.Distance(transform.position, player.position) < retreatDistance){
transform.position = Vector2.MoveTowards(transform.position, player.position, -speed * 
Time.deltaTime);
}

}
}`

当我运行游戏时,我还没有添加射击部分,敌人我已经应用脚本在游戏仍在播放时传送到地形外的位置,如果您移动敌人,如果您尝试沿 x 或 z 轴移动它,它只会沿 x 移动然后返回原始位置,如果您沿 y 移动它会让你,然后移回原来的位置,无论如何我都可以正确地完成这项工作。

注意统一向量:低维向量运算"切掉"多余维数。

你的问题是 Z 完全被排除在等式😉之外.

你只需要使用 Vector3 类的方法,而不是 Vector2。

最新更新