public override void OnInitialize() { playerMovementController = actionPack.actionController as PlayerLocomotionController; characterTransform = actor.GetComponent <Transform>(); characterController = actor.GetComponent <CharacterController>(); movementProfile = (actor.profile as PlayerProfile).movementProfile; }
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; }
// 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); } }
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)); }
// 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); } } }
public override void OnInitialize() { playerMovementController = actionPack.actionController as PlayerLocomotionController; movementProfile = (actor.profile as MotileProfile).movementProfile; }