Untiy 使用RotateAround()方法实现物体围绕某个点或者某个物体旋转

Untiy 实现物体围绕指定点或者某个物体旋转,可使用RotateAround()方法。

语法:

public void RotateAround(Vector3 point, Vector3 axis, float angle);

其中,point:旋转中心点位置;
axis:要围绕的轴,如x,y,z
angel:旋转的角度

该方法可以实现物体围绕指定的中心点和轴旋转。

下面举例实现围绕某个点旋转和围绕某个物体旋转。

1、围绕某个点旋转。

在场景中创建一个球体。然后编写以下脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotateTest : MonoBehaviour
{
    public float rotationSpeed = 0.01f;
    public Transform tran;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        tran.RotateAround(new Vector3(10f,0f,0f), Vector3.up* rotationSpeed, 1f);
    }
}

把脚本放到场景中,并把球体拉到tran参数中,运行场景,球体就会围绕着坐标为(10f,0f,0f),Y轴方向旋转,每帧旋转角度为1。

这里围绕的轴常用的是围绕X轴、Y轴、Z轴,表示法可参考以下:

//X轴表示法
Vector3.right
new Vector3(1,0,0)

//Y轴表示法
Vector3.up
new Vector3(0,1,0)

//Z轴表示法
Vector3.forward
new Vector3(0,0,1)

2、围绕某个物体旋转,方法大抵相同,主要是要把第一个参数设置为物体的坐标,第二个参数为沿着物体的轴。

同样创建一个球体和一个物体:

创建以下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotateTest : MonoBehaviour
{
    public float rotationSpeed = 0.01f;
    、、public Transform tran;

    public Transform tran1;

    public Transform Obj;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //tran.RotateAround(new Vector3(10f,0f,0f), Vector3.up* rotationSpeed, 1f); //围绕点旋转

        tran1.RotateAround(Obj.position, Obj.up * rotationSpeed, 1f);  //围绕物体旋转
    }
}

把脚本拉到场景中,把球体赋予tran1,物体赋予Obj,那么就可以实现球体围绕着物体旋转。

最终效果:

Untiy 实现物体围绕指定点或者某个物体旋转

你可能感兴趣的:(unity,c#,游戏引擎,经验分享,开发语言)