赞
踩
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 实现物体围绕指定点或者某个物体旋转
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。