Quantcast
Channel: Questions in topic: "addforce"
Viewing all articles
Browse latest Browse all 1264

AddForce Jump Problem

$
0
0
Hi there! I am new to Unity, and I have the following script to control my character, but I am having a problem making him jump. He plays the animation when I click space, but not actually gaining any height. There are no errors in the console. Any help is appreciated. using UnityEngine; using System.Collections; [RequireComponent( typeof( CharacterController ) )] public class RPGMovement : MonoBehaviour { public float ForwardSpeed = 8f; public float BackwardSpeed = 4f; public float StrafeSpeed = 5f; public float RotateSpeed = 110f; public float JumpForce = 500f; public Rigidbody m_rigidbody; CharacterController m_CharacterController; Vector3 m_LastPosition; Animator m_Animator; PhotonView m_PhotonView; PhotonTransformView m_TransformView; float m_AnimatorSpeed; Vector3 m_CurrentMovement; float m_CurrentTurnSpeed; void Start() { m_CharacterController = GetComponent(); m_Animator = GetComponent(); m_rigidbody = GetComponent(); m_PhotonView = GetComponent(); m_TransformView = GetComponent(); } void Update() { if( m_PhotonView.isMine == true ) { ResetSpeedValues(); UpdateRotateMovement(); UpdateForwardMovement(); UpdateBackwardMovement(); UpdateStrafeMovement(); UpdateJump(); MoveCharacterController(); ApplyGravityToCharacterController(); ApplySynchronizedValues(); } UpdateAnimation(); } void UpdateAnimation() { Vector3 movementVector = transform.position - m_LastPosition; float speed = Vector3.Dot( movementVector.normalized, transform.forward ); float direction = Vector3.Dot( movementVector.normalized, transform.right ); if ( Mathf.Abs( speed ) < 0.2f ) { speed = 0f; } if( speed > 0.6f ) { speed = 1f; direction = 0f; } if( speed >= 0f ) { if( Mathf.Abs( direction ) > 0.7f ) { speed = 1f; } } m_AnimatorSpeed = Mathf.MoveTowards( m_AnimatorSpeed, speed, Time.deltaTime * 5f ); m_Animator.SetFloat( "Speed", m_AnimatorSpeed ); m_Animator.SetFloat( "Direction", direction ); m_LastPosition = transform.position; } void ResetSpeedValues() { m_CurrentMovement = Vector3.zero; m_CurrentTurnSpeed = 0; } void ApplySynchronizedValues() { m_TransformView.SetSynchronizedValues( m_CurrentMovement, m_CurrentTurnSpeed ); } void ApplyGravityToCharacterController() { m_CharacterController.Move( transform.up * Time.deltaTime * -9.81f ); } void MoveCharacterController() { m_CharacterController.Move( m_CurrentMovement * Time.deltaTime ); } void UpdateForwardMovement() { if( Input.GetKey( KeyCode.W ) || Input.GetAxisRaw("Vertical") > 0.1f ) { m_CurrentMovement = transform.forward * ForwardSpeed; } } void UpdateBackwardMovement() { if( Input.GetKey( KeyCode.S ) || Input.GetAxisRaw("Vertical") < -0.1f ) { m_CurrentMovement = -transform.forward * BackwardSpeed; } } void UpdateStrafeMovement() { if( Input.GetKey( KeyCode.Q ) == true ) { m_CurrentMovement = -transform.right * StrafeSpeed; } if( Input.GetKey( KeyCode.E ) == true ) { m_CurrentMovement = transform.right * StrafeSpeed; } } void UpdateRotateMovement() { if( Input.GetKey( KeyCode.A ) || Input.GetAxisRaw("Horizontal") < -0.1f ) { m_CurrentTurnSpeed = -RotateSpeed; transform.Rotate(0.0f, -RotateSpeed * Time.deltaTime, 0.0f); } if( Input.GetKey( KeyCode.D ) || Input.GetAxisRaw("Horizontal") > 0.1f ) { m_CurrentTurnSpeed = RotateSpeed; transform.Rotate(0.0f, RotateSpeed * Time.deltaTime, 0.0f); } } void UpdateJump() { if (Input.GetKeyDown(KeyCode.Space)) { m_rigidbody.AddForce(Vector3.up * JumpForce); m_Animator.SetTrigger("Jump"); } } }

Viewing all articles
Browse latest Browse all 1264