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度。

  • 相关阅读:
    甘草
    html2pdf
    gitlab jenkins 安装笔记
    mac phpbrew安装
    域名解析各项记录对应的值
    网站添加ico图标
    dom控制
    webstrom 代码工具(转http://www.cnblogs.com/tangdanni11/p/5149063.html)
    http协议(转http://www.cnblogs.com/guguli/p/4758937.html)
    预解析机制
  • 原文地址:https://www.cnblogs.com/mimime/p/6754444.html
Copyright © 2011-2022 走看看