简体   繁体   中英

transform.position not setting correct position in Unity?

I am having this problem that I don't know how to solve, I have a moving object that return to a position if a condition is verified, but it seems like it is working sometimes, but sometimes it is not ..

Here is my script :

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;
        }
    }
}

The problem is that I can see in my Unity editor that the position is different from what I have set, and I don't understand from Where those values came from, I did not write them for sure.

在此处输入图片说明

Any help would be much appreciated.

You are moving object with transform.Translate every frame, so immediately after setting up new position, your object is moved again. Notice that in your case trn, and transform, refers to the same Transform component.

Why don't you change your trn.position= to transform.position= I don't think you need GetComponent<> for transform component of the current gameObject. Or maybe related to relativeTo parameter of .Translate method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM