Пример #1
0
    void FixedUpdate()
    {
        //Squeeze pressure /Trigger (-speed/2) and (speed/2)
        float squeezePressure = 0;

        //Lets not use this when we don't need it! :O
        if (movementSettings.movementRailPressure || movementSettings.grabberPressure || movementSettings.movementMountPressure)
        {
            squeezePressure  = (speed * Input.GetAxis("RTrigger")); //Get the trigger / pressure value.
            squeezePressure  = (speed / 2) - squeezePressure;       //convert to speed/2 minus the pressure making it (-speed/2) and (speed/2)
            squeezePressure *= -1;                                  //Flip it!
        }

        //MovementRail
        if (!movementSettings.movementRailAuto)
        {
            if (!grabber.isDown && grabber.isUp)
            {
                if (!movementSettings.movementRailPressure)
                {
                    movementRail.Move(Input.GetAxis("Vertical") * speed);//move the movementRail forward and backwards.(The Z axis) using the Vertical Axis of an controller
                }
                else
                {
                    movementRail.Move(squeezePressure);//move the movementRail using pressure
                }
            }
        }
        else
        {
            if (!grabber.isDown && grabber.isUp)
            {
                movementRail.Move(speed, true, grabber.isHoldingObject);//Move automatic :P
            }
        }
        //MovementMount
        if (!movementSettings.movementMountAuto)
        {
            if (!grabber.isDown && grabber.isUp)
            {
                if (!movementSettings.movementMountPressure)
                {
                    movementMount.Move(Input.GetAxis("Horizontal") * speed);//move the movementMount left and right.(The x axis) using the Horizontal Axis of an controller
                }
                else
                {
                    movementMount.Move(squeezePressure);//move the movementRail using pressure
                }
            }
        }
        else
        {
            if (!grabber.isDown && grabber.isUp)
            {
                movementMount.Move(speed, true, grabber.isHoldingObject);
            }
        }

        //Grabber
        if (!movementSettings.grabberAuto)
        {
            if (!movementSettings.grabberPressure)
            {
                if (Input.GetButton("Fire1"))
                {
                    if (movementSettings.grabberSqueeze)
                    {
                        grabber.MoveDown(speed, false);
                    }
                    else
                    {
                        grabber.MoveDown(speed, true);
                    }
                }
                if (Input.GetButton("Fire2"))
                {
                    grabber.MoveUp(speed);
                }

                if (movementSettings.grabberSqueeze)
                {
                    int squeezePower = Mathf.FloorToInt(Input.GetAxis("RTrigger") * 100);
                    grabber.Squeeze(squeezePower);
                }
                else
                {
                    if (grabber.CatcherCheck())
                    {
                        grabber.LetGo();
                    }
                }
            }
            else
            {
                grabber.MovePressure(squeezePressure);
                if (grabber.CatcherCheck())
                {
                    grabber.LetGo();
                }
            }
        }
        else
        {
            if (!grabber.isDown)
            {
                if (movementSettings.grabberSqueeze)
                {
                    grabber.MoveDown(speed, false);
                }
                else
                {
                    grabber.MoveDown(speed, true);
                }
            }
            else
            {
                if (movementSettings.grabberSqueeze)
                {
                    //Move up when there is a target or when we are holding a object.
                    if (grabber.targetObject == null || grabber.isHoldingObject || (!grabber.isHoldingObject && grabber.isGoingUp))
                    {
                        grabber.MoveUp(speed, true);
                    }
                }
                else
                {
                    grabber.MoveUp(speed, true);
                }
            }
            if (movementSettings.grabberSqueeze)
            {
                int squeezePower = Mathf.FloorToInt(Input.GetAxis("RTrigger") * 100);
                grabber.Squeeze(squeezePower);
            }
            else
            {
                if (grabber.CatcherCheck())
                {
                    grabber.LetGo();
                }
            }
        }
    }