找回密码
 立即注册
查看: 540|回复: 0

一、Unity里的向量、角度操作

[复制链接]
发表于 2021-4-6 07:55 | 显示全部楼层 |阅读模式
一、已知两向量A, B ,求出A->B的旋转角


旧版本:
public static float SignedAngleBetween(Vector3 a, Vector3 b, Vector3 n){        float angle = Vector3.Angle(a,b);        float sign = Mathf.Sign(Vector3.Dot(n,Vector3.Cross(a,b)));        float signed_angle = angle * sign;        return (signed_angle <= 0) ? 360 + signed_angle : signed_angle;}
例子:已知向量a=(1, 0, 1), b=(-1, 0, 1) ,求a顺时针转到b的旋转角,则n应该为(0, 1, 0),结果为270度。若n=(0, -1, 0),则逆时针,结果为90度。
新版本,Unity已提供现成接口:
float angle = Vector2.SignedAngle(atkDir, new Vector2(0, 1));
float angle = Vector3.SignedAngle(atkDir, new Vector3(0, 1,0));
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-20 20:20 , Processed in 0.091585 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表