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

  • 相关阅读:
    xml根据属性去重。如csprj去重
    table中td的内容换行。
    基于jq的表单填充
    c#包含类文件到csprj中
    t4 根据表名数组生成实体
    js中找string中重复项最多的字符个数
    一步步配置cordova android开发环境
    .net framework卸载工具
    Sql Server查询视图和表
    DbHelper.ttinclude 更新,查询视图和表
  • 原文地址:https://www.cnblogs.com/mimime/p/6754444.html
Copyright © 2011-2022 走看看