Делал по примеру, персонаж бегает и прыгает в 3D пространстве, но вот если прыгнуть в объект (куб к примеру) или стоять рядом и жать в его сторону и прыгать то персонаж как бы плавно подымается по стене, какая-бы высота у куба не была бы, подскажите что не так?
Вот код
private float speed = 5f;
private float gravity = 25f;
private bool Grounded = false;
private Rigidbody PlayerRigidbody;
private Camera PlayerCamera;
private float InputGetAxisVertical{ get { return Input.GetAxis("Vertical"); }}
private float InputGetAxisHorizontal{ get { return Input.GetAxis("Horizontal"); }}
private void Awake(){
PlayerRigidbody = GetComponent<Rigidbody>();
PlayerRigidbody.freezeRotation = true;
PlayerRigidbody.useGravity = false;
}
private void FixedUpdate(){
PlayerMove();
}
private void PlayerMove(){
if(Grounded){
Vector3 targetVelocity = new Vector3(InputGetAxisHorizontal, 0, InputGetAxisVertical) * speed;
Vector3 velocity = PlayerRigidbody.velocity;
Vector3 velocityChange = (targetVelocity - velocity);
velocityChange.y = 0;
PlayerRigidbody.AddForce(velocityChange, ForceMode.VelocityChange);
if(Input.GetButton("Jump")){
PlayerRigidbody.velocity = new Vector3(velocity.x, 7f, velocity.z);
}
}
PlayerRigidbody.AddForce(new Vector3(0, -gravity * PlayerRigidbody.mass, 0));
Grounded = false;
}
private void OnCollisionStay(){ Grounded = true; }