【发布时间】:2021-11-12 19:09:45
【问题描述】:
我正在努力解决非常奇怪且可能很简单的问题,我创建了一个机器人,他的任务是朝着目标移动我的意思是我在 void update 中使用 Vector3.MoveTowards 函数来每帧移动我的机器人,但问题是他仅移动一次并停止,他正在迈出一步而不是例如 100 步。我正在使用 Unity3D。这是源代码;
public class Test01 : MonoBehaviour
{
public float speed, stopDist, rotationSpeed, moveSpeed, minSpeed, maxBackSpeed, maxFrontSpeed, turnSpeed, riseSpeed;
public Transform target;
private Rigidbody rb;
private float currentSpeed;
public bool isFinding = false;
private PlaySound signal;
void Start()
{
signal = GameObject.FindGameObjectWithTag("Signal").GetComponent<PlaySound>();
rb = GetComponent<Rigidbody>();
}
private void Update()
{
// If space key button is pressed the robot's isFinding bool is becaming true and robot is starting searching for target.
if (Input.GetKeyDown(KeyCode.Space))
{
isFinding = true;
if (Vector3.Distance(transform.position, target.position) > stopDist)
{
transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
signal.isAlarming = true;
signal.Sound();
}
else if (Vector3.Distance(transform.position, target.position) < stopDist)
{
isFinding = false;
signal.isAlarming = false;
SoundManager.instance.StopSound();
StopChasing();
}
}
}
public void StopChasing()
{
transform.position = this.transform.position;
}
【问题讨论】: