Делая движение игрока менее плавным - PullRequest
0 голосов
/ 02 июня 2019

Так что у меня возникли проблемы с моей раннер-игрой.
В данный момент движение кажется ледяным, потому что у меня есть импульс, я должен прекратить движение в одну сторону, чтобы пойти другим, и это дает мне этот действительно ледяной эффект.не хочу.

Я пытался увеличить трение, но это приводит к тому, что мой куб падает по дорожке

void FixedUpdate()
{

    rb.AddForce(0, 0, forwardForce * Time.deltaTime);

    if (Input.GetKey("d"))
    {
        rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
    }

    if (Input.GetKey("a"))
    {
        rb.AddForce(-sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
    }

Я хочу, чтобы движение было красивым, плавным и быстрым.

Ответы [ 2 ]

1 голос
/ 02 июня 2019

Итак, прежде всего: я бы порекомендовал не использовать AddForce для перемещения игрока, вы можете просто rb.velocity = sth;(что бы убрать лед).Но!Если вы действительно хотите этого, я думаю, вы можете попробовать:

rb.AddForce(-rb.velocity*(from 0 to 1 the less the less icy) + (the speed you want to change to));

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

Надеюсь, что это работает!

0 голосов
/ 03 июня 2019

возможно это:

Vector3 CalculatedForce = -rb.velocity;
CalculatedForce.z = forwardForce * Time.deltaTime;
if (Input.GetKey("d"))
    CalculatedForce.x += sidewaysForce * Time.deltaTime;
else if (Input.GetKey("a"))
    CalculatedForce.x += -sidewaysForce * Time.deltaTime;

rb.AddForce(CalculatedForce, ForceMode.VelocityChange);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...