간단한 게임을 만들고 충돌을 추가하여 플레이어가 창 밖으로 나가지 않게했습니다. 작동하고 일부 벽을 만들고 충돌을 만들려고했으나 작동하지 않았고/정말 버그가있었습니다. "플레이어"가 벽을 통과하는 것을 막는 방법은 무엇입니까?어떻게 "플레이어"와 "벽"의 충돌을 구현합니까?
이동 코드 :
if(e.KeyCode == Keys.A)
{
left = true;
}
if (e.KeyCode == Keys.D)
{
right = true;
}
if (e.KeyCode == Keys.W)
{
up = true;
}
if (e.KeyCode == Keys.S)
{
down = true;
}
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
#region Stop controls
if (e.KeyCode == Keys.A)
{
left = false;
}
if (e.KeyCode == Keys.D)
{
right = false;
}
if (e.KeyCode == Keys.W)
{
up = false;
}
if (e.KeyCode == Keys.S)
{
down = false;
}
}
내 외벽 충돌 : 현재 당신이 외벽의 좌표 선수뿐만 아니라 경계를 결정하는 정수 값을 사용하는 것처럼 나는 그것을 읽을
if (right == true)
{
if (player.Left >= level.Width - player.Width)
{
player.Left = level.Width - player.Width;
}
else
{
player.Left += speed;
}
}
if (left == true)
{
if (player.Left <= level.Left)
{
player.Left = level.Left;
}
else
{
player.Left -= speed;
}
}
if (up == true)
{
if(player.Top <= level.Top)
{
player.Top = level.Top;
}
else
{
player.Top -= speed;
}
}
if (down == true)
{
if (player.Top >= level.Bottom - player.Height)
{
player.Top = level.Bottom - player.Height;
}
else
{
player.Top += speed;
}
}
감사합니다, 당신은 그리드 오른쪽 어떤 종류의 의미? 그러나 "플레이어"는 제한과 같은 "격자"없이 자유롭게 움직일 수 있습니까? –
그리고 내 플레이어는 너비가 1 픽셀이고 높이가 1 픽셀입니다. 아니? –
예, 그리드로 작동합니다. 순전히 C# 또는 게임 엔진 내부에서이 작업을 수행하고 있습니까? 순수하게 C#으로 만들고 변수로 플레이어 위치 만 설정하면 설정 한 것 이외의 제한이 없습니다. 그리드의 바깥 쪽 부분을 바깥 쪽 경계 벽으로 정의 할 수 있습니다. 이것은 각 셀에 대해 정의한 설정과 함께 플레이어가 걸을 수있는 위치와 그와 같이 이동 제한을 결정합니다. – Doh09