transform.position无法在Unity中设置正确的位置?

时间:2018-08-08 20:01:51

标签: c# unity3d

我遇到了一个我不知道该如何解决的问题,我有一个移动的物体,如果验证了条件,该物体会返回到某个位置,但是似乎有时它可以工作,但有时却不起作用。

这是我的脚本:

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编辑器中看到位置与我设置的位置不同,并且我不知道这些值来自何处,所以我不确定是否写这些值。

enter image description here

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您正在通过transform移动对象。请平移每一帧,因此在设置新位置后立即重新移动对象。请注意,在您的情况下,trn和transform指的是相同的Transform组件。

答案 1 :(得分:0)

为什么不将trn.position=更改为transform.position=,我不认为您需要GetComponent<>作为当前gameObject的变换组件。或者可能与relativeTo方法的.Translate参数有关。