⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basiccollisiongroup.java

📁 一个java的免费游戏引擎,里面有文档,和例子
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 

package com.golden.gamedev.object.collision;

import com.golden.gamedev.object.*;

// Referenced classes of package com.golden.gamedev.object.collision:
//            CollisionRect, CollisionShape

public abstract class BasicCollisionGroup extends CollisionManager
{

    protected final CollisionRect rect1 = new CollisionRect();
    protected final CollisionRect rect2 = new CollisionRect();
    public boolean pixelPerfectCollision;

    public BasicCollisionGroup()
    {
    }

    public CollisionShape getCollisionShape1(Sprite sprite)
    {
        rect1.setBounds(sprite.getX(), sprite.getY(), sprite.getWidth(), sprite.getHeight());
        return rect1;
    }

    public CollisionShape getCollisionShape2(Sprite sprite)
    {
        rect2.setBounds(sprite.getX(), sprite.getY(), sprite.getWidth(), sprite.getHeight());
        return rect2;
    }

    public void checkCollision()
    {
        SpriteGroup spritegroup = getGroup1();
        SpriteGroup spritegroup1 = getGroup2();
        if(spritegroup.isActive() && spritegroup1.isActive())
        {
            Sprite asprite[] = spritegroup.getSprites();
            Sprite asprite1[] = spritegroup1.getSprites();
            int i = spritegroup.getSize();
            int j = spritegroup1.getSize();
            for(int k = 0; k < i; k++)
            {
                Sprite sprite;
                CollisionShape collisionshape;
                if((sprite = asprite[k]).isActive() && (collisionshape = getCollisionShape1(sprite)) != null)
                {
                    for(int l = 0; l < j; l++)
                    {
                        Sprite sprite1;
                        CollisionShape collisionshape1;
                        if(!(sprite1 = asprite1[l]).isActive() || sprite == sprite1 || (collisionshape1 = getCollisionShape2(sprite1)) == null || !isCollide(sprite, sprite1, collisionshape, collisionshape1))
                            continue;
                        collided(sprite, sprite1);
                        i = spritegroup.getSize();
                        j = spritegroup1.getSize();
                        if(!sprite.isActive() || (collisionshape = getCollisionShape1(sprite)) == null)
                            break;
                    }

                }
            }

        }
    }

    public boolean isCollide(Sprite sprite, Sprite sprite1, CollisionShape collisionshape, CollisionShape collisionshape1)
    {
        if(!pixelPerfectCollision)
            return collisionshape.intersects(collisionshape1);
        if(collisionshape.intersects(collisionshape1))
            return CollisionManager.isPixelCollide(sprite.getX(), sprite.getY(), sprite.getImage(), sprite1.getX(), sprite1.getY(), sprite1.getImage());
        else
            return false;
    }

    public abstract void collided(Sprite sprite, Sprite sprite1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -