transform.position 在 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 编辑器中看到位置与我设置的不同,而且我不明白这些值来自哪里,我没有肯定地写它们。

http://img.mukewang.com/6199b4390001eeff02230078.jpg

潇湘沐
浏览 683回答 2
2回答

湖上湖

您正在使用 transform.Translate 每帧移动对象,因此在设置新位置后,您的对象会立即再次移动。请注意,在您的情况下,trn 和 transform 指的是同一个 Transform 组件。

冉冉说

你为什么不把你的trn.position=改为transform.position=我认为你不需要GetComponent<>当前游戏对象的变换组件。或者可能与方法的relativeTo参数有关.Translate。
打开App,查看更多内容
随时随地看视频慕课网APP