Last active
May 16, 2018 03:02
-
-
Save JoeValenti/d71e26da6265f8020dfcebec1d2fff84 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using UnityEngine; | |
using UnityStandardAssets.CrossPlatformInput; | |
namespace UnityStandardAssets.Characters.ThirdPerson | |
{ | |
[RequireComponent(typeof (ThirdPersonCharacter))] | |
public class ThirdPersonUserControl : MonoBehaviour | |
{ | |
private ThirdPersonCharacter m_Character; // A reference to the ThirdPersonCharacter on the object | |
private Transform m_Cam; // A reference to the main camera in the scenes transform | |
private Vector3 m_CamForward; // The current forward direction of the camera | |
private Vector3 m_Move; | |
private Vector3 maxSpeed =5; | |
private Vector3 minSpeed =0; | |
private bool m_Jump; // the world-relative desired move direction, calculated from the camForward and user input. | |
private void Start() | |
{ | |
// get the transform of the main camera | |
if (Camera.main != null) | |
{ | |
m_Cam = Camera.main.transform; | |
} | |
else | |
{ | |
Debug.LogWarning( | |
"Warning: no main camera found. Third person character needs a Camera tagged \"MainCamera\", for camera-relative controls.", gameObject); | |
// we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them! | |
} | |
// get the third person character ( this should never be null due to require component ) | |
m_Character = GetComponent<ThirdPersonCharacter>(); | |
} | |
private void Update() | |
{ | |
if (!m_Jump) | |
{ | |
m_Jump = Input.GetButtonDown("Jump"); | |
} | |
} | |
// Fixed update is called in sync with physics | |
private void FixedUpdate() | |
{ | |
// read inputs | |
//float h = CrossPlatformInputManager.GetAxis("Horizontal"); | |
//float v = CrossPlatformInputManager.GetAxis("Vertical"); | |
float h = Input.GetAxis("Horizontal"); | |
float v = Input.GetAxis("Vertical"); | |
bool crouch = Input.GetKey(KeyCode.C); | |
// calculate move direction to pass to character | |
if (m_Cam != null) | |
{ | |
// calculate camera relative direction to move: | |
m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized; | |
m_Move = v*m_CamForward + h*m_Cam.right; | |
} | |
else | |
{ | |
// we use world-relative directions in the case of no main camera | |
m_Move = v*Vector3.forward + h*Vector3.right; | |
} | |
#if !MOBILE_INPUT | |
// walk speed multiplier | |
if (Input.GetKey(KeyCode.LeftShift)){ | |
if(m_Move <= maxSpeed) | |
speed +=1; | |
else | |
speed = maxSpeed; | |
} | |
else if(Input.GetKey("s")) | |
{ | |
if(m_Move >= minSpeed) | |
speed -= 3; | |
} | |
else if(!Inpu.GetKey("w")) | |
{ | |
if(m_Move >= 0) | |
speed -= 2; | |
} | |
#endif | |
// pass all parameters to the character control script | |
m_Character.Move(m_Move, crouch, m_Jump); | |
m_Jump = false; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment