Движение очень медленное в Unity - PullRequest
0 голосов
/ 01 августа 2020

Я работаю над очень простым c платформером с боковой прокруткой в ​​Unity 3D. Игрок представляет собой куб, можно двигаться влево и вправо, можно прыгать. Я не могу получить правильное движение, так как персонаж движется слишком медленно. Очень плавное движение и прыжки. Я трагически проиграл эту игру из-за собственных действий. Поэтому я пытаюсь воссоздать это. Вот видео оригинального движения и прыжков, которые я хочу воссоздать:

Мой прогресс на данный момент

Примечание: значения walkSpeed, jumpForce и Gravity были то, что использовалось ранее.

Поражение в первой игре было душераздирающим событием, поэтому любая помощь будет отличной.

1 Ответ

0 голосов
/ 01 августа 2020

Хорошо, я не уверен, как воссоздать это, используя скорость, но похоже, что это работает:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    public float walkSpeed = 15f;
    public float jumpSpeed = 15f;
    public float gravity = 50f;
    
    Rigidbody rb;

    bool pressedJump = false;

    float hAxis;
    
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        hAxis = Input.GetAxisRaw("Horizontal");
    }
    
    void FixedUpdate()
    {
        WalkHandler();
        
        JumpHandler();

        GravityHandler();
    }
    
    void WalkHandler()
    {
        rb.velocity = new Vector2(0f, rb.velocity.y);
        
        Vector3 movement = new Vector2(hAxis * walkSpeed * Time.deltaTime, 0f);
        
        rb.MovePosition(transform.position + movement);
    }
    
    void JumpHandler()
    {
        if (Input.GetButtonDown("Jump"))
        {
            if (!pressedJump)
            {
                pressedJump = true;

                Vector3 jumpVector = new Vector3(0f, jumpSpeed, 0f);

                rb.velocity = rb.velocity + jumpVector;
            }
        }
        else
        {
            pressedJump = false;
        }
    }

    // Check if the object is grounded
    bool CheckGrounded()
    {
        return true;
    }

    void GravityHandler()
    {
       rb.AddForce(Vector3.down * gravity * rb.mass);
    }
}

Игнорируйте метод CheckGounded

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...