add ckg
plantilla base para movimiento básico
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class spiderCharacterController : vehicleController
|
||||
{
|
||||
[Space]
|
||||
[Header ("Custom Settings")]
|
||||
[Space]
|
||||
|
||||
public spiderControllerInterface spider;
|
||||
|
||||
[Space]
|
||||
[Header ("Debug")]
|
||||
[Space]
|
||||
|
||||
public bool jumpInputActive;
|
||||
|
||||
public bool pauseSpiderInput;
|
||||
|
||||
public override void Start ()
|
||||
{
|
||||
base.Start ();
|
||||
|
||||
if (spider == null) {
|
||||
enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
void Update ()
|
||||
{
|
||||
base.vehicleUpdate ();
|
||||
|
||||
//Hold down Space to deactivate ground checking. The spider will fall while space is hold.
|
||||
if (pauseSpiderInput) {
|
||||
return;
|
||||
}
|
||||
|
||||
spider.setGroundcheck (!jumpInputActive);
|
||||
}
|
||||
|
||||
void FixedUpdate ()
|
||||
{
|
||||
if (pauseSpiderInput) {
|
||||
return;
|
||||
}
|
||||
|
||||
//** Movement **//
|
||||
Vector3 input = getInput ();
|
||||
|
||||
if (usingBoost) {
|
||||
spider.run (input);
|
||||
} else {
|
||||
spider.walk (input);
|
||||
}
|
||||
|
||||
Quaternion tempCamTargetRotation = spider.getCamTargetRotation ();
|
||||
Vector3 tempCamTargetPosition = spider.getCamTargetPosition ();
|
||||
|
||||
spider.turn (input);
|
||||
|
||||
spider.setTargetRotation (tempCamTargetRotation);
|
||||
spider.setTargetPosition (tempCamTargetPosition);
|
||||
}
|
||||
|
||||
private Vector3 getInput ()
|
||||
{
|
||||
Vector3 up = spider.transform.up;
|
||||
Vector3 right = spider.transform.right;
|
||||
|
||||
axisValues = getPlayerMovementAxis ();
|
||||
|
||||
Vector3 input = Vector3.ProjectOnPlane (spider.getCameraTarget ().forward, up).normalized * axisValues.y +
|
||||
(Vector3.ProjectOnPlane (spider.getCameraTarget ().right, up).normalized * axisValues.x);
|
||||
|
||||
Quaternion fromTo = Quaternion.AngleAxis (Vector3.SignedAngle (up, spider.getGroundNormal (), right), right);
|
||||
|
||||
input = fromTo * input;
|
||||
float magnitude = input.magnitude;
|
||||
|
||||
return (magnitude <= 1) ? input : input /= magnitude;
|
||||
}
|
||||
|
||||
public void setPauseSpiderInputState (bool state)
|
||||
{
|
||||
pauseSpiderInput = state;
|
||||
}
|
||||
|
||||
//INPUT FUNCTIONS
|
||||
public override void inputHoldOrReleaseJump (bool holdingButton)
|
||||
{
|
||||
if (driving && !usingGravityControl && isTurnedOn) {
|
||||
jumpInputActive = holdingButton;
|
||||
}
|
||||
}
|
||||
|
||||
public override void inputHoldOrReleaseTurbo (bool holdingButton)
|
||||
{
|
||||
if (driving && !usingGravityControl && isTurnedOn) {
|
||||
//boost input
|
||||
if (holdingButton) {
|
||||
if (vehicleControllerSettings.canUseBoost) {
|
||||
usingBoost = true;
|
||||
//set the camera move away action
|
||||
mainVehicleCameraController.usingBoost (true, vehicleControllerSettings.boostCameraShakeStateName,
|
||||
vehicleControllerSettings.useBoostCameraShake, vehicleControllerSettings.moveCameraAwayOnBoost);
|
||||
}
|
||||
} else {
|
||||
//stop boost input
|
||||
usingBoost = false;
|
||||
|
||||
//disable the camera move away action
|
||||
mainVehicleCameraController.usingBoost (false, vehicleControllerSettings.boostCameraShakeStateName,
|
||||
vehicleControllerSettings.useBoostCameraShake, vehicleControllerSettings.moveCameraAwayOnBoost);
|
||||
|
||||
//disable the boost particles
|
||||
usingBoosting ();
|
||||
|
||||
boostInput = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void inputSetTurnOnState ()
|
||||
{
|
||||
if (driving && !usingGravityControl) {
|
||||
if (mainVehicleHUDManager.canSetTurnOnState) {
|
||||
setEngineOnOrOffState ();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user