- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,我刚刚开始学习java(我通常用Objective-C 编程)。我的第一款游戏是一款类似于神奇宝贝的游戏,但是,它显然要简化得多......
我遇到的麻烦是我找不到方法来阻止 2 个 Sprite 互相“重影”。在屏幕上,我设置了边框(边界)、玩家 Sprite 和敌人 Sprite 。
public void playerUpdate(GameContainer gc, int delta) throws SlickException
{
Input input = gc.getInput();
// Right Key Pressed
if (input.isKeyDown(Input.KEY_RIGHT) && (leftKeyPressed == false)
&& (upKeyPressed == false) && (downKeyPressed == false))
{
player = walkRight;
playerX += speed * delta;
rightKeyPressed = true;
if (playerX >= Main.getWindowWidth() - pImageWidth)
{
playerX -= speed * delta;
}
} else if (rightKeyPressed == true)
{
player = standRight;
rightKeyPressed = false;
}
^^ 这是我需要实现碰撞检测的地方。我已经在每个图像中添加了矩形以进行碰撞检测,但是,我并不寻求一种使矩形消失的方法。我需要一种方法来阻止一个 Sprite 穿过另一个 Sprite 。
有什么想法吗?
我尝试过使用
if (this.playerBoundingBox.intersects(Enemy.getEnemyBoundingBox())
{
playerX += speed * delta;
}
但是,当我实现此操作时,播放器会卡住并且无法释放。
谢谢大家
最佳答案
碰撞检测是一个广泛而深入的主题,有很多方法可以实现它。
我强烈建议阅读The Guide To Implementing 2D Platformers ,这应该会给你一些很好的建议。我已经使用 Sonic Retro Physics Guide 实现了 2D 平台引擎,这真的很有用。
在我的游戏三叶草:一个好奇的故事中,我(不必要!)实现了更复杂的每像素碰撞与边界框的混合。方法是计算出所需的移动路径,然后逐像素检查是否有任何障碍物 - 如果有,则仅移动到像素减一的位置。
创建一个在所有情况下都完美无缺的 2D 引擎是一项非常艰巨的任务,而不是您应该尝试的事情。对 Actor 的尺寸以及任何物体在一次滴答中可以移动的最大速度等进行一些限制将使您的生活更轻松。省略可以插入玩家的东西会容易得多,因为这样您只需在一个“方向”上进行一次碰撞检测(即当玩家移动时,而不是当所有其他 Actor 移动时)。
关于java - 阻止 Sprite 通过另一个 Sprite 重影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202572/
如何在拖动图像时去除重影。我们已经尝试过代码,它可以在 Firefox 和 chrome 中运行,但不能在 Safari 中运行。请任何人帮助我的代码有什么错误。 https://jsfiddle.n
我做了一个小程序: 将 Canvas 内的鼠标光标更改为黑色方 block 给黑色方 block 留下一条漂亮的轨迹,随着时间的推移逐渐消失(程序的要点) 代码如下: var canvas = doc
我使用 CALayer 的自定义扩展绘制为可滚动图形,并在 [MyCustomCALayer drawInContext] 中调用了一堆 CGContextAddCurveToPoint。 我实际上并
好吧,我刚刚开始学习java(我通常用Objective-C 编程)。我的第一款游戏是一款类似于神奇宝贝的游戏,但是,它显然要简化得多...... 我遇到的麻烦是我找不到方法来阻止 2 个 Sprit
我一直在尝试设置一个 javascript 游戏循环,但我遇到了两个问题。我发现在 chrome 中,当我失去浏览器窗口的焦点,然后单击返回我正在运行的动画时,会发生这种奇怪的“ catch ”事情,
在我将其切换为使用 DrawerLayout 内的 fragment 之前,我的布局工作正常。之后,主视图中的 ListView 在滚动时会重影列表的副本。 ListView 内容滚动,但第一页的副本
我是一名优秀的程序员,十分优秀!