unity Quaternion(四元数)与Transform

旋转向量
//将向量的方向转换为四元数
//x、y、z旋转角度都为0,就是Vector3.forward的方向
Quaternion qua0=new Quaternion();
Debug.Log(qua0.eulerAngles);//输出:(0.0, 0.0, 0.0)
//同上
Quaternion qua1=Quaternion.LookRotation(Vector3.forward);
Debug.Log(qua1.eulerAngles);//输出:(0.0, 0.0, 0.0)
//将向量Vector3.right的方向转换为四元数
Quaternion qua2=Quaternion.LookRotation(Vector3.right);
Debug.Log(qua2.eulerAngles);//输出: (0.0, 90.0, 0.0)
//向量(1,0,0)绕Y轴旋转90度。
Vector3 a=new Vector3(1,0,0);
Vector3 b=Quaternion.AngleAxis(90, Vector3.up)*a;
Debug.Log(b);//输出:(0.0, 0.0, -1.0)
//向量(1,1,0)旋转到Vector3.right的方向(左视图)
Vector3 e=new Vector3(1,1,0);
Vector3 f=Quaternion.LookRotation(Vector3.right)*e;
Debug.Log(f);//输出: (0.0, 1.0, -1.0)
//将一个向量旋转到Transform组件的旋转角度
Vector3 f=new Vector3(0,0,1);
f=transform.rotation*f;
Quaternion.LookRotation (Vector3 forward, Vector3 upwards= Vector3.up);

现在有两个对象,如下图:

714380-20191220161409749-2084515408.jpg
714380-20191220161424873-1646166019.jpg
梯子:旋转欧拉角度为x=0,y=90,z=22。
狗:旋转欧拉角度为x=0,y=0,z=0。
求狗爬上梯子里的旋转欧拉角?

var ladder=new GameObject();
ladder.transform.eulerAngles=new Vector3(0f,90f,22f);
Debug.Log(ladder.transform.up);//ouput:(0.0,0.9,0.4)
Debug.Log(ladder.transform.right);//ouput:(0.0,0.1,-0.9)

var rotation=Quaternion.LookRotation(ladder.transform.up,ladder.transform.right);
//dog.transform.rotation=rotation;
Debug.Log(rotation.eulerAngles);//output:(292,0.0,0.0)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值