如何在命中事件上修改LibGdx actor属性

时间:2013-05-28 14:53:04

标签: libgdx

我在游戏中使用Actor类来获得Actors类的几个优点。但目前我正面临使用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

1 个答案:

答案 0 :(得分: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(特别是关于“投射物体”的最后一节。