UnityVR--小程序12--车床刀架、主轴的简单运动

    在工厂的场景中,可以加入一些机床主轴的旋转或者刀架的移动等,增加场景的动态效果。实现方法有千万种,比如动画:

    

    如果只是单纯地旋转和平移,用动画更快捷一些。不过考虑到后面还要继续做机械运动模拟(先挖坑),那么使用一些函数和方法也是必要的。

    在前面旋转的圣诞树中已经介绍了旋转的脚本的实现,它也可以用于实现在车床主轴的旋转上,只是还需要增加一些速度渐变和启动停止的控制(再次挖坑)。

    下面尝试控制刀架或者尾架在直线方向上的来回平移。其实平移的方法Translate在金色的子弹1中,控制子弹飞行时也已经使用过了。下面记录一下操作过程:

    1. 找到机床中需要实现平移的节点。注意,一定要找到完整的刀架轿厢节点(这是一个装配体,包括了很多的子节点)。

     2. 确定刀架的本地坐标方向和行程。刀架的运动是相对于整个车床的坐标系的,因此需要找到它在本地坐标中的起点和终点坐标。

    (1)选择工具栏中的“Local"按钮,让其显示本地坐标,这样就能从显示中看出这个刀架的移动方向是它的本地Y轴方向。

    

     (2)将刀架轿厢从运动的起点移动到终点,记录它的本地坐标值。

     3. 使用transform.Translate方法实现

public class MachineMove : MonoBehaviour
{
    float speed = -0.002f;//移动速度
    void Update()
    {
        transform.Translate(new Vector3(0, speed, 0), Space.Self);
        var Distance = transform.localPosition.y;  //当前位置
        if (Distance <= -1f|| Distance >= 2f)
            speed = -speed;  //到达限位后反向
    }
}

    4. 效果

5. 补充:

在本类的一开始设置一个速度变量:

float speed = -0.002f;

在update()中的移动语句:

        transform.Translate(new Vector3(0, speed, 0), Space.Self);
        var Distance = transform.localPosition.y; 
        if (Distance <= -4.5f|| Distance >= 17.5f)
            speed = -speed;  

本文中用到的所有模型来自于Asset小店、Sketchfab和TB店购买。

猜你喜欢

转载自blog.csdn.net/tangjieitc/article/details/130237940