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

该文章讨论了在Unity中正确复位物体位置和旋转的方法。通过在Start函数中存储初始的transform.position和transform.rotation,在Reset函数中分别还原这些值,以确保物体的状态完全恢复。注意,直接赋值transform对象不会持久保存,而应该分别保存position和rotation。
摘要由CSDN通过智能技术生成

在你第一眼看到这个问题的时候可能会想到只需将物体的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;
    }
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值