[英]transform.position not setting correct position in Unity?
我遇到了一个我不知道该如何解决的问题,我有一个移动的对象,如果条件经过验证,该对象会返回到某个位置,但有时它似乎在工作,但有时却没有。
这是我的脚本:
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编辑器中看到位置与设置的位置不同,并且我不知道这些值来自何处,因此我不确定是否将其写入。
任何帮助将非常感激。
您正在通过transform移动对象。平移每一帧,因此在设置新位置后立即重新移动对象。 注意,在您的情况下,trn和transform指的是相同的Transform组件。
为什么不将trn.position=
更改为transform.position=
我认为您不需要GetComponent<>
作为当前gameObject的转换组件。 或者可能与.Translate
方法的relativeTo
参数有关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.