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

如何在命中事件上修改LibGdx actor属性,libgdx,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类是因为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

把这个放进
hitActor!=空
测试:

if (hitActor instanceof Enemy) {
   Enemy e = (Enemy)hitActor;
   e.health -= 10;
}
它检查返回的
Actor
是否恰好是
敌人
子类的实例。如果是,则可以强制转换对象并应用更改。如果没有,则忽略命中

您可以在此处了解有关将对象从泛型类型强制转换为更特定类型的更多信息:
(特别是关于“铸造对象”的最后一节。

将其放入
hitActor!=null
测试中:

if (hitActor instanceof Enemy) {
   Enemy e = (Enemy)hitActor;
   e.health -= 10;
}
这将检查返回的
Actor
是否恰好是
敌方
子类的实例。如果是,您可以强制转换对象并应用更改。如果不是,则忽略命中

您可以在此处了解有关将对象从泛型类型强制转换为更特定类型的更多信息: (特别是关于“铸造对象”的最后一节