gpt4 book ai didi

java - 可碰撞颜色 Java/Android 游戏

转载 作者:行者123 更新时间:2023-12-01 16:00:29 25 4
gpt4 key购买 nike

我正在尝试为Android开发涉及许多纹理的横向卷轴游戏,所以我在想是否可以创建一个单独的图层,所有单一的独特颜色(非常类似于绿屏效果)使其成为可碰撞的并使其成为可碰撞的对玩家不可见。

(前景层)视觉图像

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

(第三层)背景​​图片

我不确定这是否可能或如何有效地实现它,这个想法只是有一天我随机想到的。

future 的问候,谢谢

最佳答案

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

使用 3D 图形硬件和四边形,您可能会更改渲染状态,以单色渲染为离屏纹理,从而产生您所描述的第二个可碰撞层。然而,该纹理驻留在图形内存中,它不像系统内存那样可以自由/轻松地访问。通过总线来回获取数据的速度很慢。它的成本也很高,需要整个额外的渲染 channel (最坏的情况是,帧速率减半),而且你还用完了所有额外的图形 RAM……所有这些都只是为了执行碰撞检测之类的操作。存在更好的方案,特别是使用数据结构。

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

像您这样的想法可能并不总是可行,但您持续的创造性思维将会带来可行的想法。有时您只需尝试对它们进行编码即可找到答案!

关于java - 可碰撞颜色 Java/Android 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4066177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com