Пример #1
0
    public override void OnInitialize()
    {
        playerMovementController = actionPack.actionController as PlayerLocomotionController;

        characterTransform = actor.GetComponent <Transform>();

        characterController = actor.GetComponent <CharacterController>();

        movementProfile = (actor.profile as PlayerProfile).movementProfile;
    }
Пример #2
0
    public override void OnInitialize()
    {
        mainCamera = Camera.main.transform;

        playerMovementController = actionPack.actionController as PlayerLocomotionController;

        characterTransform = actor.GetComponent <Transform>();

        animationController = actor.controllerPack.GetController <AnimationController>();

        movementProfile = (actor.profile as MotileProfile).movementProfile;
    }
Пример #3
0
        // Update is called once per frame

        public void Move(MovementProfile movementProfile, Vector3 translate, Vector3 rotateFirst, bool fixedXRotate = false)
        {
            Vector3 rotate = rotateFirst;

            if (fixedXRotate)
            {
                rotate = new Vector3(0, rotate.y, rotate.z);
            }
            switch (movementProfile)
            {
            case MovementProfile.Drone:
                MoveLikeDrone(translate, rotate);
                break;

            case MovementProfile.FixedWing:
                MoveLikeFixedWing(translate, rotate);
                break;

            case MovementProfile.CourseLock:
                MoveCourseLock(translate, rotate);
                break;

            case MovementProfile.Orbit:
                MoveOrbit(translate, droneCam.orbitTarget);
                break;
            }

            if (fixedXRotate && movementProfile != MovementProfile.Orbit)
            {
                transform.eulerAngles = new Vector3(rotateFirst.x, transform.eulerAngles.y, transform.eulerAngles.z);
            }
            else
            {
                float clampedX = transform.eulerAngles.x;
                if (clampedX >= 90 && clampedX <= 270)
                {
                    if (clampedX >= 90)
                    {
                        clampedX = 90;
                    }
                    else
                    {
                        clampedX = 270;
                    }
                }

                transform.eulerAngles = new Vector3(clampedX, transform.eulerAngles.y, transform.eulerAngles.z);
            }
        }
Пример #4
0
        void Update()
        {
            GamePadState padState = GamePad.GetState(PlayerIndex.One);

            if (padState.Buttons.A == ButtonState.Pressed)
            {
                movementProfile = MovementProfile.Drone;
            }
            if (padState.Buttons.B == ButtonState.Pressed)
            {
                movementProfile = MovementProfile.FixedWing;
            }
            if (padState.Buttons.X == ButtonState.Pressed)
            {
                movementProfile = MovementProfile.CourseLock;
            }
            if (padState.Buttons.Y == ButtonState.Pressed)
            {
                movementProfile = MovementProfile.Orbit;
            }

            if (padState.DPad.Up == ButtonState.Pressed)
            {
                droneMovement.translateSpeed += 0.25f;
            }
            if (padState.DPad.Down == ButtonState.Pressed)
            {
                droneMovement.translateSpeed -= 0.25f;
            }
            if (padState.DPad.Right == ButtonState.Pressed)
            {
                droneMovement.rotateSpeed += 5;
            }
            if (padState.DPad.Left == ButtonState.Pressed)
            {
                droneMovement.rotateSpeed -= 5;
            }

            droneMovement.Move(movementProfile, new Vector3(padState.ThumbSticks.Left.X, padState.Triggers.Right - padState.Triggers.Left, padState.ThumbSticks.Left.Y),
                               new Vector3(-padState.ThumbSticks.Right.Y / 2, padState.ThumbSticks.Right.X / 2, 0));
        }
Пример #5
0
        // Update is called once per frame
        public void Update()
        {
            if (serialPort != null && serialPort.IsOpen)
            {
                serialPort.Write(pingData, 0, pingData.Length);

                serialPort.Read(incomingData, 0, 256);

                if (incomingData[0] == 0x55 && Time.unscaledTime > startTime)
                { // probably positioning data
                    Vector2        leftStick   = Vector2.zero;
                    Vector2        rightStick  = Vector2.zero;
                    SwitchPosition leftSwitch  = SwitchPosition.UP;
                    SwitchPosition rightSwitch = SwitchPosition.UP;
                    float          tiltLever;

                    leftStick.Set(
                        DeadzoneAdjust((float)LittleEndiansToInt(incomingData[43], incomingData[44]) / 1000), // left stick x
                        DeadzoneAdjust((float)LittleEndiansToInt(incomingData[39], incomingData[40]) / 1000)  // left stick y
                        );

                    rightStick.Set(
                        DeadzoneAdjust((float)LittleEndiansToInt(incomingData[31], incomingData[32]) / 1000), // right stick x
                        DeadzoneAdjust((float)LittleEndiansToInt(incomingData[35], incomingData[36]) / 1000)  // right stick y
                        );

                    int rawLeftSwitch  = LittleEndiansToInt(incomingData[47], incomingData[48]);
                    int rawRightSwitch = LittleEndiansToInt(incomingData[51], incomingData[52]);

                    if (rawLeftSwitch > 30)
                    {
                        leftSwitch = SwitchPosition.DOWN;
                    }
                    else if (rawLeftSwitch < -30)
                    {
                        leftSwitch = SwitchPosition.UP;
                    }
                    else
                    {
                        leftSwitch = SwitchPosition.CENTER;
                    }

                    if (rawRightSwitch > 30)
                    {
                        rightSwitch = SwitchPosition.DOWN;
                    }
                    else if (rawRightSwitch < -30)
                    {
                        rightSwitch = SwitchPosition.UP;
                    }
                    else
                    {
                        rightSwitch = SwitchPosition.CENTER;
                    }

                    tiltLever = ((float)LittleEndiansToInt(incomingData[55], incomingData[56]) / 1000);

                    if (rightSwitch == SwitchPosition.UP)
                    {
                        droneMovement.translateSpeed = 5f;
                        droneMovement.rotateSpeed    = 360;
                    }
                    else if (rightSwitch == SwitchPosition.CENTER)
                    {
                        droneMovement.translateSpeed = 10f;
                        droneMovement.rotateSpeed    = 360;
                    }
                    else if (rightSwitch == SwitchPosition.DOWN)
                    {
                        droneMovement.translateSpeed = 50f;
                        droneMovement.rotateSpeed    = 720;
                    }

                    MovementProfile movementProfile = MovementProfile.Orbit;

                    if (leftSwitch == SwitchPosition.UP)
                    {
                        movementProfile = MovementProfile.Drone;
                    }
                    else if (leftSwitch == SwitchPosition.CENTER)
                    {
                        movementProfile = MovementProfile.CourseLock;
                    }
                    else if (leftSwitch == SwitchPosition.DOWN)
                    {
                        movementProfile = MovementProfile.Orbit;
                    }

                    droneMovement.Move(movementProfile, new Vector3(rightStick.x, leftStick.y, rightStick.y),
                                       new Vector3((tiltLever * 89), leftStick.x, 0), true);

                    //Console.WriteLine("L: {0}, {1} R: {2}, {3}", leftStick.x, leftStick.y, rightStick.x, rightStick.y);
                }
            }
        }
Пример #6
0
    public override void OnInitialize()
    {
        playerMovementController = actionPack.actionController as PlayerLocomotionController;

        movementProfile = (actor.profile as MotileProfile).movementProfile;
    }