我已将代码应用于 3 个对象。到目前为止,这段代码切换了三个杯子,以便它们交换位置。代码获取杯子的开始位置,然后是每个杯子的结束位置。所有 3 个结束位置实际上都是其他杯子的开始位置,因为我希望它们交换到与其他杯子相同的确切位置。更新功能使得如果杯子的结束位置(随机选择)不等于它的开始位置,它将随机移动到其他两个不是开始位置的位置之一。
我无法弄清楚一些事情并尝试了一些事情,但我认为我的代码不正确。我想要:
让杯子随机移动到新位置,但不要将杯子移动到另一个杯子已经移动到的位置。(当前播放动画时,2 个杯子可能会移动到 3 个点中的同一点)。
我只是不知道该往哪个方向前进。我还希望这个动画继续播放,并且让杯子继续随机交换它们的位置。在弄清楚这一点的方向上取得一点帮助也会有所帮助。
这就是我希望最终结果类似于:http: //i249.photobucket.com/albums/gg240/OldNewby4507/shell-game-animated.gif
提前致谢。
using UnityEngine;
using System.Collections;
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour
{
private Vector3 startPos;
private float lerp = 0, duration = 1;
public Vector3[] endPos = new Vector3[3];
int index;
Vector3 theNewPos;
void Start ()
{
startPos = transform.position;
endPos [0] = GameObject.Find ("object1").transform.position;
endPos [1] = GameObject.Find ("object2").transform.position;
endPos [2] = GameObject.Find ("object3").transform.position;
index = Random.Range (0, endPos.Length);
theNewPos = endPos[index];
}
void Update() {
if (theNewPos != startPos) {
lerp += Time.deltaTime / duration;
transform.position = Vector3.Lerp (startPos, theNewPos, lerp);
}
}
}