Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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 float m_Turn;
- private float m_Turn_Last;
- 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 = CrossPlatformInputManager.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");
- bool crouch = Input.GetKey(KeyCode.C);
- // calculate move direction to pass to character
- if (m_Cam != null)
- //if (false) // Já nechci relativni pohyb vuci kamere
- {
- // 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;
- // když je ekvipnutá zbran, chci s ni mirit i kdyz stojim chci otacet s panackem
- m_Turn = m_Cam.eulerAngles[1];
- }
- else
- {
- // we use world-relative directions in the case of no main camera
- m_Move = v*Vector3.forward + h*Vector3.right;
- m_Turn = 0;
- //turnIntegratorTest = h;
- }
- //#if !MOBILE_INPUT
- // walk speed multiplier
- if (Input.GetKey(KeyCode.LeftShift)) m_Move *= 2.5f;
- //#endif
- // pass all parameters to the character control script
- m_Character.Move(m_Move, crouch, m_Jump);
- //m_Character.Turn ((m_Turn-m_Turn_Last)/10);
- //m_Turn_Last = m_Turn;
- //m_Character.Turn(h);
- m_Jump = false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement