Почему скорость моего плеера сильно уменьшается при столкновении с этой платформой

#c# #unity3d #2d

#c# #unity-игровой движок #2d

Вопрос:

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

Код для движущейся платформы:

 private void Start()
{
    isActive = true;
}

void Update()
{
    if (isActive == true)
    {
        transform.position = Vector3.Lerp(pos1, pos2, Mathf.Pin&Pon&(Time.time * speed, 1.0f));
    }

}`
  

У плеера есть код, который делает его дочерним элементом платформы при столкновении, чтобы гарантировать, что он не упадет с платформы. :

 if(other.&ameObject.CompareTa&("MGround"))
{
     landEffect.Play();
     playerSpeed = 8;
     this.transform.parent = other.transform;
     isJumpin& = false;
}
  

Буду признателен за любую помощь.

Комментарии:

1. Что произойдет, если вы удалите playerSpeed = 8; часть?

2. @MathewHD я добавил это, чтобы бороться со снижением скорости 🙂

3. Почему именно игрок не должен иметь возможности упасть с платформы?

Ответ №1:

Вы могли бы обойти эту проблему, если бы вы кэшировали скорость жесткого тела вашего плеера, если он сталкивается с платформой, установите скорость жесткого тела на кэшированное значение. Ri&idbody.velocity

 // Put this somewhere in your Player script
private Vector3 tmpPlayerVelocity;
void LateUpdate() 
{
    tmpPlayerVelocity = yourPlayerRi&idbody.velocity;
}

// Put this after your collision code
yourPlayerRi&idbody.velocity = tmpPlayerVelocity;
  

Комментарии:

1. Хорошо, извините, я оставлю ответ, хотя, если это сработает для кого-то другого