向量的叉乘+Vector3补充+四元数

反三角函数相关知识:

 float a = Mathf.Asin(0.5f) * Mathf.Rad2Deg;
 Debug.Log("a:" + a);

运行结果如下:

向量的叉乘

几何角度:两个向量叉乘,得到一个新的向量,新向量跟原始两个向量都垂直,也就是得到由两个向量所确定平面的法向量。

数学角度:a(x,y,z)     b(i,j,k)

a x b=(y*k-z*j,z*i-x*k,x*j-y*i)

Vector3的补充

player.transform.position=Vector3.SmoothDamp(player.transform.position,cube.transform.position,ref speed,2);

第一个参数:当前位置;    第二个参数:目标位置;      第三个参数:物体移动时运动速度;

第四个参数:移动的花费时间。

四元数

在使用欧拉角进行旋转时,有一定几率会发生万向节死锁的的情况

实数:分为有理数和无理数;

虚数:1^2=-1

复数:实数+虚数

超复数:(x,y,z,w)

X=nx*sin(theta/2);

Y=ny*sin(theta/2);

Z=nz*sin(theta/2);

W=cos(theta/2);

例如cube沿着z轴旋转60度,代码为:

cube.transform.rotation=new Quaternion(0,0,Mathf.sin(30*Mathf.Deg2Rad),Mathf.cos(30*Mathf.Deg2Rad));

实例运用部分API

代码如下:

public GameObject cube;
void Update()
{
        Quaternion q2 = Quaternion.Euler(0, 60, 0);
        cube.transform.rotation = Quaternion.Lerp(cube.transform.rotation, q2, 0.1f);
}

运行实现效果如下:

 运行游戏,挂载脚本的物体旋转到指定的角度

 当运行游戏时,我们可以通过控制鼠标在水平轴上的移动来控制cube的旋转,具体实现代码可如下所示:

private float mouseX;
 void Update()
    {
        mouseX = Input.GetAxis("Mouse X");
        Quaternion q1 = Quaternion.AngleAxis(mouseX, Vector3.up);
        cube.transform.rotation *= q1;
    }

该段代码实现的效果如下:

该系列专栏为网课课程笔记,仅用于学习参考。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值