我正在开发一款小型 RPG 游戏,我目前拥有的是:
*带有动画和基本碰撞的角色;*一个 32x32 的盒子,我在上面测试碰撞;
这就是现在的全部..xD
我的角色是 32xPixels 宽,48xPixels 高,32x38。
我有两个矩形,playerRectangle
(用于碰撞和移动);并且rectangleAnimation
,对于角色动画。
好吧,我的问题是,我如何制作一个只覆盖一半字符的碰撞矩形?现在我的矩形是 32x48,那么如何在不裁剪图像的情况下使其成为32x24?
它给人一种在某物面前的错觉,例如一块岩石或一棵树。
我尝试制作一个单独的精灵,它是 32x24 并制作了一个矩形,并在我的播放器类中绘制了两个精灵,但这不起作用......
我的最后一个问题是,我是否应该单独开设一个班级,就像CollisionHandler.cs
我所有的固体物品一样,比如墙壁和盒子?
这是我的播放器移动代码(不尝试制作不同大小的矩形):
if (keyState.IsKeyDown(Keys.Left))
{
playerRectangle.X -= playerSpeed;
movingLeft = true;
movingRight = false;
}
else if (keyState.IsKeyDown(Keys.Right))
{
playerRectangle.X += playerSpeed;
movingRight = true;
movingLeft = false;
}
if (keyState.IsKeyDown(Keys.Up))
{
playerRectangle.Y -= playerSpeed;
movingUp = true;
movingDown = false;
}
else if (keyState.IsKeyDown(Keys.Down))
{
playerRectangle.Y += playerSpeed;
movingDown = true;
movingUp = false;
}
(对不起,代码看起来很乱,我是这个网站的新手,我不知道如何构建它:/)
我的碰撞检查(在 Game1.cs 中):
if(isColliding())
{
if (player.movingRight)
{
player.playerRectangle.X -= player.playerSpeed;
}
else if (player.movingLeft)
{
player.playerRectangle.X += player.playerSpeed;
}
if (player.movingUp)
{
player.playerRectangle.Y += player.playerSpeed;
}
else if(player.movingDown)
{
player.playerRectangle.Y -= player.playerSpeed;
}
}
我有一个Game1.cs
名为“isColliding”的方法,它检查另一个类矩形和我的 playerRectangle 中的碰撞。
对不起,这太长了,但提前谢谢你,如果你需要知道别的东西,请告诉我:)