Проблема со стеной для скалолазания игрокаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Проблема со стеной для скалолазания игрока

Сообщение Anonymous »

По сути, я хочу, чтобы, когда мой игрок падает и приближается к стене, он может прыгать и взбираться на нее, а также прыгать и двигаться по оси X в противоположном направлении от стены. >
Я создал 3 игровых объекта groundCheck как дочерние элементы моего игрока Transform, и они расположены под ним: один внизу по центру, один внизу слева и один внизу справа. Затем я проверяю, сталкиваются ли они со стенами или землей с помощью этих функций:

Код: Выделить всё

bool CheckDown()
{
if (Physics2D.OverlapCircle(groundCheck.position, 0.01f, whatIsGround))
return true;
else
return false;
}

bool CheckGround()
{
if (Physics2D.OverlapCircle(groundCheck.position, 0.01f, whatIsGround))
return true;
if (Physics2D.OverlapCircle(groundCheck2.position, 0.01f, whatIsGround))
return true;
if (Physics2D.OverlapCircle(groundCheck3.position, 0.01f, whatIsGround))
return true;
else
return false;
}

bool CheckWallLeft()
{
if (Physics2D.OverlapCircle(groundCheck3.position, 0.01f, whatIsGround))
return true;
else
return false;
}

bool CheckWallRight()
{
if (Physics2D.OverlapCircle(groundCheck2.position, 0.01f, whatIsGround))
return true;
else
return false;
}
Затем я использую эти логические значения, чтобы определить, может ли игрок прыгать или нет:

Код: Выделить всё

if (CheckWallLeft() && !CheckWallRight())
{
if (h > 0)
{
GetComponent().velocity = new Vector2(h * speedHeight, GetComponent().velocity.y);
}
}

if (!CheckWallLeft() && CheckWallRight())
{
if (h < 0)
{
GetComponent().velocity = new Vector2(h * speedHeight, GetComponent().velocity.y);
}
}

if (!CheckGround())
{
GetComponent().velocity = new Vector2(h * speedHeight, GetComponent().velocity.y);
}

if (CheckDown())
{
GetComponent().velocity = new Vector2(h * speedHeight, GetComponent().velocity.y);
}
Переменная h — это входные данные через GetAxis("Horizontal"). Но по какой-то причине это работает только тогда, когда игрок падает и смотрит на стену слева. Справа они могут перемещаться по оси X в направлении стены, поэтому не упадут, если продолжат нажимать D. В чем может быть проблема?

Подробнее здесь: https://stackoverflow.com/questions/312 ... wall-issue
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»