Unity_物体方向错乱问题与Space的关系与解决方法

来源:互联网 发布:知豆新能源图片 编辑:程序博客网 时间:2024/06/01 19:56

以物体向前走的案例来说明
物体旋转时错位的情况也可以参考本文

物体的正前方与世界的正前方重合时,不会发生错位

void Update () {        //获取坐标                float ver= Input.GetAxis("Vertical");        //根据w,s键获取的坐标选择让物体向前,向后运动        //以下说明只改变这一行        obj2.transform.Translate(new Vector3(0, 0, ver) * Time.deltaTime * 10,Space.Self); }

不会发生错位

当物体的前方和世界坐标的前方产生夹角的时候,就会根据Space.World和Space.Self的不同发生方向错乱问题

 obj2.transform.Translate(obj2.transform.forward * ver * Time.deltaTime * 10, Space.Self);

这里写图片描述

obj2.transform.Translate(new Vector3(0, 0, ver) * Time.deltaTime * 10,Space.World);

这里写图片描述

首先说一下避免物体运动方向错乱的方法:
我们都知道让物体运动要先设置运动方式,是沿着哪个轴去运动(是沿着自己的轴还是世界的轴),最后一个Space参数是决定你怎么去运动的(参考系,是按照世界坐标系还是个人坐标系)。
只要我们保持着两个参数是相反的,物体就不会转向,比如我们第一个参数是沿着个人坐标系的x轴去运动,那么最后一个参数我们就写Spacce.World。反之第一个写Vector3(1,0,0),按着世界坐标系的x轴运动,那么我们就写Space.Self。

下面说一下我个人的理解。
这个指令类似我们人的行动方式。假如我们对一个人下达运动的指令,首先我们告诉他往哪走,然后我们在告诉他以某一物体作为参照物,然后让他去运动。
上边物体转向的情况就是,我们让一个人按着自己的前方去运动,并且以自己为参照物。这时就相当于蒙着他的眼,让他走直线,那么这个人肯定不会走正前方。在他个人认为他向前走,而我们看来确是转向了。
其他转向类似。

我们可以这样理解物体运动的代码,让一个物体去运动的时候,一定要有和运放的方式相异的参照物。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 荣耀v8指纹消失怎么办 耳机话筒进水了怎么办 beats耳机进水了怎么办 音量孔进水了怎么办 苹果手机屏幕进水了怎么办 耳机孔进水了怎么办 华为v10声音小怎么办 荣耀v10声音小怎么办 华为变耳机模式怎么办 小米六耳机模式怎么办 苹果成耳机模式怎么办 苹果调耳机模式怎么办 ipad耳机孔进水怎么办 iphone一直是耳机模式怎么办 华为耳机音质不好怎么办 苹果声音键失灵怎么办 苹果耳机不兼容怎么办 usb耳机声音小怎么办 手机不认耳机怎么办 华为手机视频无声怎么办 苹果进入耳机模式怎么办 号码丢了怎么办挂失 移动手机卡丢了怎么办 连接不上蓝牙怎么办 音响主板坏了怎么办 索尼耳机开不了怎么办 蓝牙耳机容易掉怎么办 华为耳机戴不稳怎么办 苹果蓝牙不匹配怎么办 华为手机不能开机怎么办 华为麦芒c199死机怎么办 朵唯手机打不开怎么办 无线网卡没信号怎么办 手机无线网慢怎么办 光纤路由器坏了怎么办 断电路由器不好使怎么办 华为手机触摸屏失灵怎么办 oppoa59手机声音小怎么办 三星s8卡槽坏了怎么办 联通手机没信号怎么办 华为手机卡锁死怎么办