java - 我可以为对象的每个实例创建一个循环吗?

标签 java loops collision-detection

我有很多对象“ block ”的实例,我需要添加碰撞检测来查看我的 Sprite 是否触及了 block 。但是必须复制、粘贴和编辑每个代码将花费很多时间,因为每个级别上大约有 200 个 block ...这里是碰撞检测,有没有什么方法可以创建一个循环,以便所有 block 都得到分配并且值发生变化,因此对于第一个 block ,例如第一个 block 将是“block.bottomry”,然后第二个 block 将是“block2.bottomry”,第三个 block 将是“block3.bottomry”,依此类推,直到所有 block 都被分配走了。这是部分代码:

public void iscollided() {
        // bottom right touching block?
        if (sprite.bottomrx < block.bottomrx && sprite.bottomrx > block.bottomlx && sprite.bottomry < block.bottommy && sprite.bottomry > block.topry ){
                Log.d(TAG, "Collided!!!!!!!!!!!!1");


        }

        // bottom left touching block?
        if (sprite.bottomlx < block.bottomrx && sprite.bottomlx > block.bottomlx && sprite.bottomly < block.bottommy && sprite.bottomly > block.topry ){
            Log.d(TAG, "Collided!!!!!!!!!!!!1");


        }
        // top right touching block?
        if (sprite.toprx < block.bottomrx && sprite.toprx > block.bottomlx && sprite.topry < block.bottommy && sprite.topry > block.topry ){
            Log.d(TAG, "Collided!!!!!!!!!!!!1");


        }
        //top left touching block?
        if (sprite.toprx < block.bottomrx && sprite.toprx > block.bottomlx && sprite.topry < block.bottommy && sprite.topry > block.topry ){
            Log.d(TAG, "Collided!!!!!!!!!!!!1");


        }

最佳答案

当然:)您可以将 block 添加到列表数据结构中,然后循环遍历列表检查每个 block 。

public class Foo {

    private SpecialSprite sprite = new SpecialSprite();
    private List<Block> blocks = new ArrayList<Block>();

    public void addBlocks() {

        blocks.add(new Block(...));
        blocks.add(new Block(...));
        blocks.add(new Block(...));
    }

    public void isCollided() {

        for(Block block : blocks) {

            // collision detection for each block.
            if(sprite.bottomrx < block.bottomrx ... ) {

                Log.d(TAG, "Collided!!!!!!!!!!!!");
            }
        }
    }
}

编辑:更具体的示例。

关于java - 我可以为对象的每个实例创建一个循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10073539/

相关文章:

java - 用静态最终字符串替换调试消息

java - 字段注入(inject)如何破坏不变性

java - java中Paint循环出现问题

java - 我正在尝试制作基于控制台的战舰游戏,但我不知道如何设置战舰

javascript - 您将如何使用 javascript 和 jQuery 检测下面这个 2d 游戏中的碰撞?

swift - 添加多个边框以检测屏幕内外的节点

java - Intellij Idea 运行/调试配置和 Gradle 任务中的 SSH 隧道

java - 处理表行数据结构的最佳模式是什么?

C++ 拉取信息并循环显示

Jquery冲突: draggable and obstacle being the same element