public void move()
{
//if (this.getWorld().getObjects(Marker.class).isEmpty())
Dog bill = getOneIntersectingObject(Dog.class);
Marker bone = getOneIntersectingObject(Dog.class);
if (bone == null);
{
Marker bone= new Marker();
getWorld().addObject(marker.getX(), marker.getY());
}
super.move(1);
}
我正在尝试引用当前 Actor 子类(狗)的位置,以便将另一个子类的标记(骨骼)放置在它所在的坐标处。
最佳答案
您可以通过调用getX()
来检索 Actor 的坐标和getY()
,就像你为其他 Actor 做的那样。
如果您想调用“当前”参与者的方法,您可能需要使用 this
,例如 this.getX()
。但这只是必要,如果您需要解决一些歧义。一般情况下直接调用该方法即可。
public void move()
{
Dog bill = getOneIntersectingObject(Dog.class);
Marker bone = getOneIntersectingObject(Marker.class);
if (bone == null)
{
Marker marker = new Marker();
getWorld().addObject(marker, getX(), getY());
}
super.move(1);
}
从显示的摘录中显而易见,需要进行更改:
- 第二个参数
getOneIntersectingObject()
是Marker.class
,因为你似乎想要这个。 if
括号后没有分号。 如果不删除它:这个分号是一个空语句,所以if
不会有任何影响。后面的大括号之间的 block 将始终被执行。- 重命名第二个
bone
如marker
来表明你的意图。 (此外,它还会“遮蔽”“外部”bone
,但这在这里没有问题。) - 调用
addObject()
使用正确的参数:要放置的对象(新标记)及其坐标(通过调用getX()
和getY()
检索)。
关于java - 我如何检索 Actor 子类的坐标以便将新 Actor 放置在该位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60582770/