Физика в игре Unity (эффект маятника)

#c# #unity3d #game-engine #game-physics #game-development

#c# #unity-игровой движок #игровой движок #игра-физика #разработка игры

Вопрос:

Итак, я действительно не знаю, как искать ответ на свой вопрос, я работаю разработчиком игр для фрилансера, и моей задачей было создать «платформу pendulum», вот концепция:

введите описание изображения здесь

Я перепробовал много разных подходов, таких как, например, установка полей столкновения по бокам платформы, и когда игрок входит в поле столкновения, платформа будет двигаться как маятник.

Но я всегда сталкивался с множеством сбоев, и когда мне удавалось решить все из них, движение казалось неестественным.

Вот один из способов, который я пробовал :

 public IEnumerator RotatesTowardsLeft()
{
    while (transform.parent.eulerAngles.z < 25 || transform.parent.eulerAngles.z >= 330)//25
    {
        transform.parent.eulerAngles  = new Vector3(0, 0, speed);
        yield return new WaitForSeconds(0.01f);
    }
    currentDirection = Directions.Left;
}

public IEnumerator RotatesTowardsRight()
{
    while (transform.parent.eulerAngles.z > 335 || transform.parent.eulerAngles.z < 30)
    {
        transform.parent.eulerAngles  = new Vector3(0, 0, -speed);
        yield return new WaitForSeconds(0.01f);
    }
    currentDirection = Directions.Right;
}
  

Итак, если бы кто-нибудь мог мне помочь, это бы много значило, потому что я чувствую, что у меня заканчиваются варианты…

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

1. Вы пробовали превратить платформу в физические объекты? Вы могли бы просто приложить импульсную силу в правильном направлении, и она качалась бы естественным образом.

Ответ №1:

Попробуйте использовать физические объекты и прикрепить ConfigurableJoint к вашему объекту. (Если вы работаете в 2D, используйте DistanceJoint2D ) Затем вы можете выбрать место для соединения над ним, и это должно дать вам желаемый эффект без кучи кода. Имейте в виду, если вы работаете в 3D, потребуется немного дополнительной работы по настройке ConfigurableJoint , например, ограничение некоторых осей и силы пружины.

Надеюсь, это поможет!