Задать вопрос
Zefirot
@Zefirot

Почему персонаж подымается по стене при прыжке?

Делал по примеру, персонаж бегает и прыгает в 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; }
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 2
Griboks
@Griboks Куратор тега Unity
if(Input.GetButton("Jump")){
Надо проверить, что контроллер стоит на земле и может от неё оттолкнуться для прыжка.

Сейчас вы проверяете, что контроллер находится рядом со стеной, землёй или полом.
Ответ написан
hiniks
@hiniks
НАЧИНАЮЩИЙ ПРОГРАМИСТ
Привет, попробуй решить проблему этим способом https://youtu.be/B3g-utBGflo
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы