zoukankan      html  css  js  c++  java
  • 【转】Unity3d实现物体围绕某一点进行旋转

    1,让一个物体围绕某一点旋转,有几种方法?分别是什么?

    答:在这个点处放一个空物体B,则问题变为A绕着B旋转,

    方法1:B不动,A挂脚本实现transform的RotateAround(vector3 point, vector3 axis, float angle)函数

    例如 A.RotateAround(B.position, Vector3.up,  30*Time.deltaTime);   //A绕着B的y轴进行旋转。

    方法2:A不动,A作为B的子物体,B挂脚本实现自转,然后带着A转,类似于模拟围绕中心天体旋转。

    例如:B.Rotate (Vector3.up, 30*Time.deltaTime, Space.Self); //B绕着自身的up方向自转,从而带着A一起转。

    方法3:矩阵变换,研究中。       

    注:旋转的常用方法:

    (1)绕坐标轴旋转

    [csharp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. public void Rotate (Vector3 eulerAngles, Space relativeTo = Space.Self);  

    或者

    public void Rotate (float xAngle, float yAngle, float zAngleSpace, relativeTo = Space.Self);

    其中relativeTo = Space.Self表示绕自身坐标系旋转,ralativeTo = Space.World表示绕世界坐标系旋转。

    (2)饶某个向量旋转

    public void Rotate(Vector3 axis, float angle, Space relativeTo);

    其中axis为旋转轴方向,angle为旋转角度,relativeTo为参考坐标系,默认为Space.self。此方法的功能是使得GameObject对象在relativeTo坐标系中绕轴向量axis旋转angle度。

    (3)绕轴点旋转

    [csharp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. public void RotateAround(Vector3 point, Vector3 axis, float angel);  

    功能是使得GameObject对象绕着point点的axis方向旋转angle度。

  • 相关阅读:
    百度高级搜索技巧
    JRebel插件使用详解
    css3自适应布局单位vw,vh详解
    vue的MVVM原理
    JS实现全屏和退出全屏
    设置不定宽高的元素垂直水平居中
    微信小程序启动更新机制
    了解MVVM原理
    xss攻击和csrf攻击的定义及区别
    跨站脚本漏洞(XSS)基础讲解
  • 原文地址:https://www.cnblogs.com/mimime/p/6754444.html
Copyright © 2011-2022 走看看