Unity 使用脚本控制物体旋转
6 个月前
· 来自专栏
Unity URP学习笔记
Unity3D中的旋转
在Unity中,需要控制一个吊扇投影在场景中的阴影旋转,实际上就是要控制该物体在世界空间下Transform的Rotation。
简单的实现方式
首先,新建一个C#脚本,,将该脚本添加到相应GameObject的组件上,打开脚本在每帧执行方法中,直接添加该物体的旋转脚本看效果,代码如下:
void Update()
this.transform.Rotate(new Vector3(0,1,0) , Space.World);
}
现在旋转速度有点快,需要公开一个速度参数在外部进行调整。同时Roate方法需要换一个重载方式,调整后的代码:
public class RotateAni : MonoBehaviour
public float speed = 0.3f;
void Start()
void Update()
this.transform.Rotate(new Vector3(0,1,0) , speed , Space.World);
}
此时也希望能控制该旋转方向,直接把旋转的围绕轴公开方便在外部选择。
private Vector3 direction; //申明一个向量,用来在Rotate()方法中控制旋转轴
//定义一个枚举,分别定义不同的轴向
public enum RotateDirection
X轴正方向,
X轴负方向,
Y轴正方向,
Y轴负方向,
Z轴正方向,
Z轴负方向,
public RotateDirection rotateDir = RotateDirection.Y轴正方向; //将枚举变量设置为公开
void Start()
//初始状态时,选择一个旋转轴
switch(rotateDir)
case RotateDirection.X轴正方向:
direction = Vector3.right;
break;
case RotateDirection.X轴负方向:
direction = Vector3.left;
break;
case RotateDirection.Y轴正方向:
direction = Vector3.up;
break;
case RotateDirection.Y轴负方向:
direction = Vector3.down;
break;
case RotateDirection.Z轴正方向:
direction = Vector3.forward;
break;
case RotateDirection.Z轴负方向:
direction = Vector3.back;
break;
}
此时在该物体的组件菜单中就能看到公开的可选项。
最后用该枚举替换开始直接写入的向量就行了。
完成代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RotateAni : MonoBehaviour
public float speed = 0.3f;
private Vector3 direction;
public enum RotateDirection
X轴正方向,
X轴负方向,
Y轴正方向,
Y轴负方向,
Z轴正方向,
Z轴负方向,
public RotateDirection rotateDir = RotateDirection.Y轴正方向;
void Start()
switch(rotateDir)
case RotateDirection.X轴正方向:
direction = Vector3.right;
break;
case RotateDirection.X轴负方向:
direction = Vector3.left;
break;
case RotateDirection.Y轴正方向:
direction = Vector3.up;
break;
case RotateDirection.Y轴负方向:
direction = Vector3.down;
break;
case RotateDirection.Z轴正方向:
direction = Vector3.forward;
break;
case RotateDirection.Z轴负方向:
direction = Vector3.back;
break;