Я пытаюсь создать клон Pong для практики. Я настраиваю свой проект в 2D.
Весло состоит из следующих компонентов:
- -Rigidbody2D (установлен на
kinematic
) - -BoxCollider2D (это
trigger
)
Мяч состоит из следующих компонентов:
- -Rigidbody2D (установлен на
kinematic
) - -CircleCollider2D (это
trigger
)
Веслом управляет перетаскивание (пользователь перемещает палец по экрану влево / вправо). Я использовал для этого плагин EasyTouch
.
Затем я перемещаю мяч с помощью этого скрипта:
void Update () {
transform.position += new Vector3(xSpeed * Time.deltaTime, ySpeed * Time.deltaTime);
}
Вот как я обнаруживаю столкновения и перенаправляю мяч, когда он что-то ударяет (горизонтальные объекты - это верх / низ / весло, а вертикальные объекты - это левая / правая граница экрана):
void OnTriggerEnter2D(Collider2D c)
{
if(c.gameObject.tag.Equals("Horizontal"))
{
ySpeed *= -1;
}
else if(c.gameObject.tag.Equals("Vertical"))
{
xSpeed *= -1;
}
}
Проблема в том, что иногда мяч проходит через ракетку, что может показаться конечному пользователю некорректным. Я искал об этом в Интернете и попытался установить свойство жесткости Collision Detection
на Continuous
вместо Discrete
. Но в определенные моменты мяч все равно проходит через ракетку.
Кто-нибудь знает, как это решить? Что я делаю не так с настройкой / программированием игры?
Спасибо