#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
, например, ограничение некоторых осей и силы пружины.
Надеюсь, это поможет!