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

📄 collisiongroup.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.CollisionManager;
import com.golden.gamedev.object.Sprite;
import java.io.PrintStream;

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

public abstract class CollisionGroup extends BasicCollisionGroup
{

    public static final int LEFT_RIGHT_COLLISION = 1;
    public static final int RIGHT_LEFT_COLLISION = 2;
    public static final int TOP_BOTTOM_COLLISION = 4;
    public static final int BOTTOM_TOP_COLLISION = 8;
    protected Sprite sprite1;
    protected Sprite sprite2;
    protected int collisionSide;
    protected double collisionX1;
    protected double collisionY1;
    protected double collisionX2;
    protected double collisionY2;

    public CollisionGroup()
    {
    }

    public boolean isCollide(Sprite sprite, Sprite sprite3, CollisionShape collisionshape, CollisionShape collisionshape1)
    {
        if(super.isCollide(sprite, sprite3, collisionshape, collisionshape1))
        {
            sprite1 = sprite;
            sprite2 = sprite3;
            collisionSide = 0;
            collisionX1 = sprite.getOldX();
            collisionY1 = sprite.getOldY();
            collisionX2 = sprite3.getOldX();
            collisionY2 = sprite3.getOldY();
            double d = sprite.getX() - collisionX1;
            double d1 = sprite.getY() - collisionY1;
            double d2 = sprite3.getX() - collisionX2;
            double d3 = sprite3.getY() - collisionY2;
            double d4 = collisionshape.getX();
            double d5 = collisionshape.getY();
            double d6 = collisionshape1.getX();
            double d7 = collisionshape1.getY();
            collisionshape.move(-(d / 2D), -(d1 / 2D));
            collisionshape1.move(-(d2 / 2D), -(d3 / 2D));
            if(!collisionshape.intersects(collisionshape1))
            {
                collisionshape.setLocation(d4, d5);
                collisionshape1.setLocation(d6, d7);
                collisionshape.move(-(d / 4D), -(d1 / 4D));
                collisionshape1.move(-(d2 / 4D), -(d3 / 4D));
                if(!collisionshape.intersects(collisionshape1))
                {
                    collisionshape.setLocation(d4, d5);
                    collisionshape1.setLocation(d6, d7);
                }
            }
            CollisionRect collisionrect;
            if((collisionrect = CollisionManager.getIntersectionRect(collisionshape.getX(), collisionshape.getY(), collisionshape.getWidth(), collisionshape.getHeight(), collisionshape1.getX(), collisionshape1.getY(), collisionshape1.getWidth(), collisionshape1.getHeight())).width <= collisionrect.height)
                collisionSide = collisionshape.getX() >= collisionshape1.getX() ? 1 : 2;
            else
                collisionSide = collisionshape.getY() >= collisionshape1.getY() ? 4 : 8;
            return true;
        } else
        {
            return false;
        }
    }

    public void revertPosition1()
    {
        if((collisionSide & 0x1) != 0 || (collisionSide & 0x2) != 0)
            sprite1.forceX(collisionX1);
        if((collisionSide & 0x4) != 0 || (collisionSide & 0x8) != 0)
            sprite1.forceY(collisionY1);
    }

    public void revertPosition2()
    {
        if((collisionSide & 0x1) != 0 || (collisionSide & 0x2) != 0)
            sprite2.forceX(collisionX2);
        if((collisionSide & 0x4) != 0 || (collisionSide & 0x8) != 0)
            sprite2.forceY(collisionY2);
    }

    public Sprite getSprite1()
    {
        return sprite1;
    }

    public Sprite getSprite2()
    {
        return sprite2;
    }

    public int getCollisionSide()
    {
        return collisionSide;
    }

    public void printCollisionSide()
    {
        String s = "Collision Side ->";
        if((collisionSide & 0x1) != 0)
            s = s + " Left<->Right";
        if((collisionSide & 0x2) != 0)
            s = s + " Right<->Left";
        if((collisionSide & 0x4) != 0)
            s = s + " Top<->Bottom";
        if((collisionSide & 0x8) != 0)
            s = s + " Bottom<->Top";
        System.out.println(s);
    }
}

⌨️ 快捷键说明

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