Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可碰撞彩色Java/Android游戏_Java_Android - Fatal编程技术网

可碰撞彩色Java/Android游戏

可碰撞彩色Java/Android游戏,java,android,Java,Android,我正在尝试为android开发一款包含许多纹理的侧滚游戏,所以我想如果我能创建一个单独的层,所有单一的独特颜色(非常类似于绿色屏幕效果)都可以使其成为可碰撞的,并且让玩家看不见 (前景层)可视图像 (第二层)前景层与主要角色的可碰撞副本 (第三层)背景图像 我不知道这是否可行,也不知道如何有效地实施,有一天我突然想到了这个想法 未来,谢谢我假设你的游戏完全是2D的,使用位光点或四边形(两个3D三角形始终与屏幕对齐)作为精灵。多年来,已经有很多利用实际图像数据进行碰撞检测的方案,无论是来自背景还是

我正在尝试为android开发一款包含许多纹理的侧滚游戏,所以我想如果我能创建一个单独的层,所有单一的独特颜色(非常类似于绿色屏幕效果)都可以使其成为可碰撞的,并且让玩家看不见

(前景层)可视图像

(第二层)前景层与主要角色的可碰撞副本

(第三层)背景图像

我不知道这是否可行,也不知道如何有效地实施,有一天我突然想到了这个想法


未来,谢谢

我假设你的游戏完全是2D的,使用位光点或四边形(两个3D三角形始终与屏幕对齐)作为精灵。多年来,已经有很多利用实际图像数据进行碰撞检测的方案,无论是来自背景还是精灵定义本身。如果您可以直接访问视频RAM,读取一个像素的位置可以快速判断是否发生了碰撞,从而提供像素级的精度,这在边界框之类的情况下是不可能实现的。然而,有一些问题使这一点变得非常复杂:弄清楚你碰撞了什么,或者你的速度是否使你在一个图形对象中有许多像素,或者它是否很薄并且你穿过它,或者如何确定偏转角度,等等

使用3D图形硬件和四边形,可以潜在地更改渲染状态,将单色渲染为屏幕外纹理,从而生成您描述的第二个可碰撞层。然而,该纹理会驻留在图形内存中,而图形内存不像系统内存那样容易访问。通过总线来回获取数据的速度很慢。它也很昂贵,需要整个额外的渲染过程(最坏的情况是,将帧速率减半),再加上您已经用完了所有额外的图形RAM。。。所有这些都只是为了做一些类似碰撞检测的事情。存在更好的方案,特别是使用数据结构

最好使用边界框,甚至子边界框的层次结构。在那之后,你可以确定你是否降落在一条斜线的另一边,只需要除法/加法运算。你的游戏已经管理了你移动的所有精灵,所以集成一些数据结构来帮助你进行碰撞检测。例如,我刚才建议使用链表来限制必须相互碰撞检测的对象


像你这样的想法可能并不总是有效的,但你持续不断的创造性思维会导致产生这样的想法。有时候你只需要试着编写代码就可以找到答案

好吧,我明白你的意思了。我将研究边界框和圆。谢谢