unity仿真应用技巧:物体移动、旋转(方式2)
1、场景搭建,导入一个滑梯模型(或是用三个Plane自己搭建一个滑梯),新建一个Cylinder圆柱体,用作控制的对象
2、实现圆柱体position的移动:
声明:
public Transform Cyl;//圆柱体;在控制物体移动、旋转时,将物体声明成Transform变量将会有很多便利
Vector3 Vect0 = new Vector3(2.97f, 0.84f, -0.129f);//圆柱体的初始位置
Vector3 Vect1 = new Vector3(2.72f, 0.84f, -0.129f);//圆柱体要到达的位置
在Update函数中添加脚本:
if (Cyl.position.x > 2.72f)//平移
{
Cyl.position = Vector3.MoveTowards(Cyl.position, Vect1, Time.deltaTime * 0.2f);
}
3、此处脚本的重点为: Vector3.MoveTowards(Cyl.position, Vect1, Time.deltaTime * 0.2f);
Vector3.MoveTowards(,,)函数的第一个参量为物体当前位置坐标,第二个参量为物体要到达的位置坐标,第三个参量控制物体的移动速度和移动方向.在本例中,作者是控制物体是水平移动,读者可自行实验物体的垂直和前后运动
4、实现圆柱的旋转:为了圆柱体在沿着滑梯向下滑动的效果尽量真实,圆柱体需进行一定角度的旋转倾斜,保证下滑时的倾斜角度与滑梯一致.
声明: Quaternion Quat1;
Quat1 = Quaternion.identity;
Quat1.eulerAngles = new Vector3(-63, -95, 90);
脚本:
if (Cyl.position.x > 2.72f)//平移
{
Cyl.position = Vector3.MoveTowards(Cyl.position, Vect1, Time.deltaTime * 0.2f);
}
else
{
if (Cyl.position.y <= 0.84f && Cyl.position.y > 0.45f)//下滑
{
Cyl.rotation = Quaternion.RotateTowards(Cyl.rotation, Quat1, 10f);
Cyl.position = Vector3.MoveTowards(Cyl.position, Vect2, Time.deltaTime * 0.5f);
}
5、此处脚本重点为:Cyl.rotation = Quaternion.RotateTowards(Cyl.rotation, Quat1, 10f);Quaternion.RotateTowards(,,)函数第一个参量为当前物体的rotation值,第二个参量为目标值,第三个参量为物体的旋转速度.请仔细学习四元素Quaternion与rotation,eulerAngles的关系