问答

java – 通过扩展Rectangle类来实现碰撞检测,以使用其包含和交叉方法

 来源: 本站整理    2019-09-06    18  

我想知道如何实现矩形的简单2D碰撞检测是一个好主意,如下所示:

>创建我自己的扩展Rectangle类的碰撞检测类.
>然后在实例化该对象时执行诸如Collision col = new Rectangle(); >我想扩展Rectangle类,因为contains()和intersects()方法;我应该这样做,还是应该为Java中的2D碰撞检测做些什么?

你可以轻松扩展Rectangle

class CollidableRectangle extends Rectangle
{
  public boolean isCollidingWith(Rectangle otherRect)
  {
    //check collision
  }

  // return all collisions
  public List<CollidableRectangle> getCollisions(List<Rectangle)
  {
    // code
  }
}

然后你会像以下一样使用它:

CollidableRectangle r1 = new CollidableRectangle();
CollidableRectangle r2 = new CollidableRectangle();

r1.isCollidingWith(r2);

//and so on

如评论中所述,我没有使用Collision类.通常你需要它,因为你也对深度或碰撞平面等碰撞参数感兴趣,所以你会有类似的东西:

class Collision
{
   CollidableRectangle first, second;
   float depth;
   Line2D collidingLine;
}

并且该方法将返回冲突列表:

public List<Collision> getCollisions(List<Rectangle) { ... }
相关文章
java – 执行/扩展接口/类的strictfp关键字的行为
问答JLS strictfp Interfaces规定: The effect of the strictfp modifier is to make all float or double expres ...
在Java中扩展一个类,以便可以将任何父类强制转换为它
问答我觉得这是不可能的,但如果没有,那将是非常有用的. 我试图以子类只有新方法,没有新构造函数,没有新字段的方式扩展父类.因此子类的基础数据结构与父类相同.当我想为内置的java类(例如Vector3d) ...
java – 匿名扩展一个类并同时实现一个接口?
问答假设我有一个名为Interface的接口,以及一个名为Base的具体类,为了使事情更复杂,有一个需要一些参数的ctor. 我想创建一个扩展Base并实现Interface的匿名类. 就像是 Inter ...
有没有办法保证一个接口在Java中扩展一个类?
问答假设我有以下情况: public abstract class Vehicle { public void turnOn() { ... } } public interface Flier { pu ...
java – 抽象类扩展具体类
问答我早先知道抽象类可以扩展具体的类.虽然我没有看到JAVA设计师的理由,但是没关系. 我也了解到,扩展具体类的抽象类可以使覆盖方法抽象出来.为什么?你可以提供有用的用例吗?我正在尝试学习设计模式,我不想 ...
java – JUnit扩展基类,并在该类中运行测试
问答我正在使用JUnit 3,并且我经常需要测试是否正确创建了一个对象.我的想法是编写一个MyTestBase类,如下所示,然后从那个特定的单元测试扩展. 但是在我给出的示例中,MyTests不会在MyT ...
java – 如何扩展SQLiteDatabase类?
问答我想扩展SQLiteDataBase类,以便能够覆盖一些方法(比如rawQuery,execSQL,-),并且可以执行一些关于查询执行时间的统计信息. 我称之为这些功能的地方有数百个.因此,从基类SQ ...
java – 为什么“扩展”在类声明中“implements”之前[closed]
问答为什么实现必须始终在类声明中扩展后写入,例如: public class Register extends ActionSupport implements ModelDriven 为什么不 publ ...
Java:扩展Object类
问答我正在编写(好,完成)Java的"扩展",这将有助于角色编程. 我用javacc将代码翻译成Java代码.我的编译器为每个声明的类添加了一些代码.这是一个更清晰的例子: MyCla ...
在Java中扩展私有类
问答我发现以下程序令人费解: package package1; public class Main { private static class A { } public static class B ...
java – 为什么扩展接口不会使它返回更精确的类型的方法?
问答例如,如果我们有一个类Person和一个类Student扩展Person. 我们可能有: public interface PersonQueryBuilder<T extends Person ...
java – 我可以扩展一个类并覆盖附带的枚举类型吗?
问答如果我有一个类包含一个枚举类型,我可以扩展这个类并覆盖枚举类型或添加更多的常量到这个枚举? 目的是用户将能够调用getColor()方法,而不知道动态对象是从基类还是派生类. 例如: public c ...
在运行时,查找Java应用程序中扩展基类的所有类
问答我想做这样的事情: List<Animal> animals = new ArrayList<Animal>(); for( Class c: list_of_all_clas ...
java – 当扩展另一个类时,如何使类扩展Observable?
问答我正在学习Java,我想让我的课程成为一个可观察的类. 但是我已经有了扩展另一个类. 我该怎么办?::我建议避免完全使用Observable类,而是定义特定于事件的侦听器和相应的事件定义.然后在类中定 ...
如何确定一个类是否在Java中扩展另一个类?
问答在Java中,我如何确定一个类延伸的类? public class A{ } public class B extends A{ } public class C extends A{ } publi ...
java – 如果扩展一个实现Serializable“下线”的类,为什么还需要重新定义serialVersionUID?
问答对于我的一个项目,我需要定义一个扩展为ProviderMismatchException的新异常. 从javadoc链接中,您可以看到此异常: >扩展IllegalArgumentExcepti ...
java – 为什么要扩展Exception类?
问答我遇到了一个扩展Exception的类: public class MyException extends Exception { public MyException() { super(); } ...
为什么我不能访问受保护的java方法,即使我已经扩展了类?
问答这是受保护方法的文档: /** Converts jmusic score data into a MIDI Sequence */ protected javax.sound.midi.Sequen ...
在一些Java代码中,为什么Deck类会扩展Card类?
问答我正在阅读一些我不熟悉的Java代码,但看起来很奇怪,如果一个类是Deck(对于一副牌),它已经有一个卡阵列的实例变量,那么为什么Deck会扩展还是继承卡?我认为只有当A是B时,A类才会继承B类(Ca ...