1、场景搭建,导入一个滑梯模型(或是用三个Plane自己搭建一个滑梯),新建一个Cylinder圆柱体,用作控制的对象
2、实现圆柱体position的移动:声明:public Tran衡痕贤伎sform Cyl;//圆柱体;在控制物体移动、旋转时,将物体声明成Tra荏鱿胫协nsform变量将会有很多便利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的关系