#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. Хорошо, извините, я оставлю ответ, хотя, если это сработает для кого-то другого