Unity 的 Quaternion.AngleAxis(angle,axis)实际应用和利用Quaternion.AngleAxis(angle,axis)实现一个物体绕另一个物体做圆周运动

Posted 一梭键盘任平生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 的 Quaternion.AngleAxis(angle,axis)实际应用和利用Quaternion.AngleAxis(angle,axis)实现一个物体绕另一个物体做圆周运动相关的知识,希望对你有一定的参考价值。

public static Quaternion AngleAxis(float angle, Vector3 axis);

描述  
创建一个绕轴旋转角度的旋转。

参数: float 和 Vector3
返回值 Quaternion

首先看参数分别是float类型和Vector3类型  含义分别是 旋转角度和绕那个向量旋转
然后看返回值是一个四元数
这是一个静态方法 所以调用的方式是 Quaternion.AngleAxis(angle,axis)
最经常的使用方法应该是:
1.传入一个旋转角度和旋转轴 可以得到一个绕指定旋转轴旋转后的四元数,然后我们可以把四元数赋值给一个物体,得到此物体绕此旋转轴旋转angle度之后的样子


2.Quaternion.AngleAxis(angle,axis)*dir  这就得到向量dir绕指定旋转轴旋转angle之后的向量

这时我们发现向量的起始点是(0,0,0)点

既然可以绕(0,0,0)点做圆周运动 那是不是也可以自己定义圆心位置

然后发现

public float angle = 2f;
    public Vector3 center;
    private Vector3 dir;
    // Start is called before the first frame update
    void Start() 
    

    // Update is called once per frame
    void Update() 
        dir = Quaternion.AngleAxis(angle, Vector3.up) * dir;
        Debug.DrawRay(center, dir, Color.green,7f);
    

画出了向量dir绕center旋转

由此 可以做到让一个物体绕另一个物体做圆周运动

public float angle = 2f;
    public Transform center;
    public float r;
    private Vector3 dir;
    // Start is called before the first frame update
    void Start() 
        dir = new Vector3(r, 0, 0);
    

    // Update is called once per frame
    void Update() 
        dir = Quaternion.AngleAxis(angle, Vector3.up) * dir;
        transform.position = center.position + dir;
    

 这样就实现了 挂载此脚本的物体以center为圆心 r为半径做圆周运动

然后继续可以推出

public float angle = 2f;
    public Transform center;
    // Start is called before the first frame update
    void Start() 
    

    // Update is called once per frame
    void Update() 
        transform.position = Quaternion.AngleAxis(angle, Vector3.up) * (transform.position - center.position) + center.position;
    

以当前物体和center的距离作为半径 绕center旋转的逻辑

unity虚拟仿真怎么样

参考技术A 很好。
根据unity官网查询,unity虚拟仿真有丰富的资源库,可以满足不同应用场景的需求,支持多种编程语言,所以unity虚拟仿真好。
虚拟仿真技术是20世纪末才兴起的一门新的综合性技术,由计算机生成现实世界的再现和构想中的世界,借助视觉、听觉及触觉等多种传感通道与虚拟世界进行自然的交互。
参考技术B

Unity是一种流行的游戏引擎,其强大的3D图形渲染和物理引擎技术,使其也被广泛应用于虚拟仿真领域。下面是Unity虚拟仿真的一些优点和应用场景:

优点:

    逼真的3D图形渲染:Unity的图形渲染引擎可以创建逼真的3D场景,以便进行真实的物理仿真。

    强大的物理引擎:Unity的物理引擎可以模拟各种物理效应,如重力、碰撞、摩擦力等,从而实现真实的物理仿真。

    丰富的资源库:Unity拥有丰富的资源库,包括3D模型、贴图、音效等,可以用于创建虚拟仿真场景。

    跨平台支持:Unity可以在多个平台上运行,如PC、移动设备、VR头盔等,可以实现多种应用场景。

应用场景:

    工业仿真:Unity可以用于创建虚拟工厂和机器人仿真,帮助工程师进行生产流程的优化和改进。

    医学仿真:Unity可以用于创建医学仿真应用,如手术模拟、疾病诊断等,帮助医学专业人员进行培训和实践。

    城市规划:Unity可以用于创建虚拟城市场景,帮助城市规划者进行规划和模拟,优化城市规划和建设。

    教育培训:Unity可以用于创建虚拟实验室、虚拟训练场等,帮助学生进行实践学习和教育培训。

综上所述,Unity虚拟仿真具有强大的图形渲染和物理仿真技术,可以应用于工业、医学、城市规划、教育培训等多个领域,为各行各业提供优秀的虚拟仿真方案。

以上是关于Unity 的 Quaternion.AngleAxis(angle,axis)实际应用和利用Quaternion.AngleAxis(angle,axis)实现一个物体绕另一个物体做圆周运动的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D资源文件 ③ ( Unity 资源包简介 | 导出 Unity 资源包 | 导出资源包的包含依赖选项 | 导入 Unity 资源包 | Unity 资源商店 )

unity导出的apk装到手机上只有摄像头

Unity前景如何?现在unity还能找到工作吗?

unity游戏unity 攻击范围绘制圆圈怎么做

换了最新版本的unity打开以前的工程除了好多警告

unity安卓开发尺寸