unity物体位移 旋转后的复位问题

在你第一眼看到这个问题的时候可能会想到只需将物体的position重置就可以,这样做可能忽略的是物体的rotation。
在start()函数中存取要复位物体的transform,然后再赋值
如果这么做了你会发现,
请添加图片描述
那个存取transform的左值,是随着物体transform变化而变化的
请添加图片描述

如果将它debug.log一下你会发现,输出的就是你要复位的物体名称
原因是tranform类的拷贝到变量中而不是一个赋值操作,要储存的物体和变量指向同一个对象(况且tranform只有get方法)

所以,要对物体进行复位操作,需要分别保存 transform.postion和transform.R0oattion

代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class reset_test : MonoBehaviour {
    
    
 
    public GameObject g;

 
    Vector3 start_position;
    Quaternion start_rotation;
 

    void Start () {
    
    
 
        start_position= g.tranforn.position;
        start_rotation= g.tranforn.rotation;

 
    }
	
    public void Reset()
    {
    
    
        Debug.Log("Reset");
 
        g.transform.position = start_position;
        g.transform.rotation = start_rotation;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_45498613/article/details/129016316