我正在尝试对游戏对象movingObject
的动画/从其生成位置转换为destination
。我认为问题出在IncrementPosition
函数的实现中。
不是将一个多维数据集从A移动到B。脚本会生成多个多维数据集,直到到达B。您能看到我要去哪里了吗?
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class onClickSpawnMove : MonoBehaviour
{
public float speed;
public GameObject randomSpawn;
private GameObject movingObject;
private Vector3 destination;
void Start()
{
Spawn();
}
void Update()
{
SetDestination(movingObject.transform.position);
if (destination != movingObject.transform.position) {
IncrementPosition();
}
}
void IncrementPosition()
{
float delta = speed * Time.deltaTime;
Vector3 currentPosition = movingObject.transform.position;
Vector3 nextPosition = Vector3.MoveTowards(currentPosition, destination, delta);
movingObject.transform.position = nextPosition;
}
void Spawn() {
Vector3 spawnPosition = new Vector3(10, 0, 0);
movingObject = Instantiate(randomSpawn, spawnPosition, Quaternion.identity);
}
public void SetDestination(Vector3 value)
{
destination = new Vector3(20, 0, 0);
}
}
答案 0 :(得分:0)
有几种方法可以随意调用Spawn / Start方法:
gameObject.AddComponent<onClickSpawnMove>();
将再次调用Start方法。
Instantiate
是已经附加了onClickSpawnMove脚本的预制件。
gameObject.SendMessage("Start");
也许但很少见。
您可以添加日志或断点以检查何时调用Spawn / Start方法。
打印哈希码将帮助您了解不同的onClickSpawnMove
实例。
然后您可以在控制台中单击该消息以了解哪个GameObject
。
void Start()
{
Spawn();
Debug.Log("Start " + this.GetHashCode(), this);
}