Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
1
Question by jaraujo_unity · May 04, 2021 at 05:12 PM · c#rigidbodyplayerforce

Rigidboy velocity not working at all

Hi, 'im doing a movment of a player with rigidbody.velocity. To the grabity i'm using AddForce. It works perfectly exept when i'm pressing any movment key ( W A S D) direction a wall. When i press the key on a wall the gravity i think is overrieded and it stop falling.

On this first image i hold the D to the wall and it never falls alt text On the second one i holded the D and it does what has to. alt text

public class PlayerMovement : MonoBehaviour { CharacterStats m_ChStats; [HideInInspector]public Rigidbody m_Rigidbody; Animator m_Animator; CapsuleCollider m_capsule; GameObject m_StartPlayerPosition; GameManager m_manager;

 //[SerializeField] float m_TurnSmoothTime = 0.1f;
 public float v;
 public float h;
 float m_MovingTurnSpeed;
 float m_StationaryTurnSpeed = 180;
 float m_GroundCheckDistance = 0.1f;//distance to floor
 float m_GravityIncreasingTimer;//distance to floor
 [SerializeField] bool m_IsGrounded;
 [SerializeField] bool m_Jump;
 public bool m_Hooking;
 public bool m_CanMove = true;
 Vector3 m_Move;
 Vector3 m_GroundNormal;
 [Range(1f, 4f)] [SerializeField] float m_GravityMultiplier = 2f;
 Vector3 extraGravityForce;
 float m_TurnAmount;
 float m_ForwardAmount;

 void Start()
 {
     m_manager = FindObjectOfType<GameManager>();
     m_Animator = GetComponent<Animator>();
     m_capsule = GetComponent<CapsuleCollider>();
     m_ChStats = GetComponent<CharacterStats>();
     m_Rigidbody = GetComponent<Rigidbody>();
     m_StartPlayerPosition = GameObject.Find("StartPlayerPosition");
     m_Rigidbody.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ;
     m_GroundCheckDistance = m_capsule.height / 2 + 0.2f;
     m_CanMove = true;
 }

 // Update is called once per frame
 void Update()
 {
     if (!m_Jump)
     {
         m_Jump = Input.GetKeyDown(m_ChStats.m_JumpKey);
         if (m_IsGrounded)
         {
             OnFloor(m_Jump);
         }
     }

     m_GravityIncreasingTimer += Time.deltaTime;
 }

 private void FixedUpdate()
 {
     h = Input.GetAxis("Horizontal");
     v = Input.GetAxis("Vertical");
     if (m_CanMove == true)
     {
         
         m_Move = v * Vector3.forward + h * Vector3.right;
         if (Input.GetKey(m_ChStats.m_SprintKey))
         {
             m_Move *= 0.5f;//Sprint
         }
         if (m_Move.magnitude >= 0.1f)
         {
             Move(m_Move * m_ChStats.m_Speed * Time.deltaTime, m_Jump, m_ChStats.m_Speed);

         }
         else
         {
             Move(m_Move, m_Jump, 0);
         }
     }
    
    // m_Jump = false;
 }
 public void Move(Vector3 move, bool jump, float speed)
 {
     if (move.magnitude > 1f)
     {
         move.Normalize();
     }
     move = transform.InverseTransformDirection(move);
     CheckGround();
     move = Vector3.ProjectOnPlane(move, m_GroundNormal);
     m_TurnAmount = Mathf.Atan2(move.x, move.z);
     m_ForwardAmount = move.z;

     Rotation();
     if(m_Hooking == false)
     {
         if (m_IsGrounded && !m_Hooking)
         {
             OnFloor(jump);
         }
         else
         {
             OnAir();
         }
         m_Rigidbody.velocity = new Vector3(0f, m_Rigidbody.velocity.y, 0f) + transform.forward * speed;

     }
     m_Jump = false;
 }

 private void CheckGround()
 {
     RaycastHit hitInfo;
     Debug.DrawLine(transform.position + (Vector3.up * 0.1f), transform.position + (Vector3.up * 0.1f) + (Vector3.down * m_GroundCheckDistance ));
     if (Physics.Raycast(transform.position+(Vector3.up *0.1f), Vector3.down, out hitInfo, m_GroundCheckDistance))
     {
         m_GroundNormal = hitInfo.normal;
         m_IsGrounded = true;
     }
     else
     {
         m_IsGrounded = false;
         m_GroundNormal = Vector3.up;
     }
 }
 public void OnAir()
 {
     extraGravityForce = (Physics.gravity * m_GravityMultiplier ) - Physics.gravity;
     m_Rigidbody.AddForce(extraGravityForce);
 }
 public void OnFloor(bool jump)
 {
     if (jump)
     {
         m_Rigidbody.velocity += Vector3.up*m_ChStats.m_JumpPower;
         m_IsGrounded = false;
     }
 }
 void Rotation()
 {
     float turnSpeed = Mathf.Lerp(m_StationaryTurnSpeed, m_MovingTurnSpeed, m_ForwardAmount);
     transform.Rotate(0, m_TurnAmount * turnSpeed * Time.deltaTime, 0);
 }

 private void OnTriggerEnter(Collider other)
 {
     if (other.CompareTag("Deadzone"))
     {
         m_manager.RestartGame();       
     }
 }
 public void RestartGame()
 {
     transform.position = m_StartPlayerPosition.transform.position;
     transform.rotation = m_StartPlayerPosition.transform.rotation;
     m_CanMove = true;
 }

}

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by LevBronstein · May 04, 2021 at 10:52 PM

Adding a velocity to the RigidBody discards all previously set velocities (forces do modify velocity, see the Second Newton's Law). To make your object act correctly in this kind of situation, I think, you need to do a vector math i.e.

     Vector3 Gravity;
     Vector3 Speed;
     Vector3 ResultVelocity;
     ...
   m_Rigidbody.velocity = Speed + Gravity;

Or you just can add your speed as a force too (see ForceMode explanation https://docs.unity3d.com/ScriptReference/ForceMode.html).

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

767 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

how to add rigidbody to my mouseposition 1 Answer

Cap rigidbody movement speed based on input. 1 Answer

rigidbody.AddForce doesn´t work in c# 1 Answer

How to apply a force at certain point of an object? 0 Answers

Rigidbody velocity and AddForce overrides,Rigidbody.velocity overrides the Force 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges