我遇到了一个我不知道该如何解决的问题,我有一个移动的物体,如果验证了条件,该物体会返回到某个位置,但是似乎有时它可以工作,但有时却不起作用。
这是我的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovingDes : MonoBehaviour {
private float speed = 5f;
Transform trn;
//-37.6914
//62.32123
// Use this for initialization
void Start() {
trn = GetComponent<Transform>();
}
// Update is called once per frame
void Update() {
transform.Translate(Vector3.back * (speed * Time.deltaTime));
if(transform.position.z <= -37.6914){
Vector3 newPosition = new Vector3(17.5f,125.7f,165.32123f);
trn.position = newPosition;
}
}
}
问题是,我可以在Unity编辑器中看到位置与我设置的位置不同,并且我不知道这些值来自何处,所以我不确定是否写这些值。
任何帮助将不胜感激。
答案 0 :(得分:2)
您正在通过transform移动对象。请平移每一帧,因此在设置新位置后立即重新移动对象。请注意,在您的情况下,trn和transform指的是相同的Transform组件。
答案 1 :(得分:0)
为什么不将trn.position=
更改为transform.position=
,我不认为您需要GetComponent<>
作为当前gameObject的变换组件。或者可能与relativeTo
方法的.Translate
参数有关。