1

Actors クラスのいくつかの利点のために、ゲームで Actor クラスを使用しています。しかし、現在、Stage.hit(...) メソッドの使用に関する問題に直面しています。

ご存じのとおり、"hit" は Actor オブジェクトを返します。

public class Enemy extends Actor
{
    int health = 100;

public Enemy (int type, float x, float y)
{
    setX(x);
    setY(y);
}

public void act(float deltaTime)
{               
    Actor hitActor = GameAsset.stage.hit(getX(), getY(), false);
    if(hitActor != null))
    {
               health -= 10;
               // next, should be reducing hitActor health in stage, but how?
    }
}
...

質問は、上記のコメントで行う方法はありますか?

下手な英語でごめんなさい:D

4

1 に答える 1

1

これをhitActor != nullテストに入れます:

if (hitActor instanceof Enemy) {
   Enemy e = (Enemy)hitActor;
   e.health -= 10;
}

返されたものがサブクラスActorのインスタンスであるかどうかを確認します。Enemyその場合は、オブジェクトをキャストして変更を適用できます。そうでない場合、ヒットは無視されます。

汎用タイプからより具体的なタイプへのオブジェクトのキャストについて詳しくは、http: //docs.oracle.com/javase/tutorial/java/IandI/subclasses.html (特に「オブジェクトのキャスト」に関する最後のセクション) を参照してください。

于 2013-05-28T15:01:33.177 に答える