我不知道为什么但是这部分代码正在改变我的变量:toMovePosition
bodyNpc.setLinearVelocity(toMovePosition.sub(bodyNpc.getPosition()).nor());
代码:
private void createPhysics(final Camera camera, PhysicsWorld physicsWorld) {
// TODO Auto-generated method stub
bodyNpc = PhysicsFactory.createCircleBody(physicsWorld, this, BodyType.KinematicBody, PhysicsFactory.createFixtureDef(0, 0, 0));
bodyNpc.setUserData("N" + ArrayPosition);
physicsWorld.registerPhysicsConnector(new PhysicsConnector(this, bodyNpc, true, false)
{
@Override
public void onUpdate(float pSecondsElapsed)
{
super.onUpdate(pSecondsElapsed);
if(toMovePosition != null){ //Si te on anar
bodyNpc.setLinearVelocity(toMovePosition.sub(bodyNpc.getPosition()).nor());
Log.w("Npc", ""+toMovePosition);
}
}
});
}
变量:
public Body bodyNpc;
private Vector2 toMovePosition;
吸气者和二传手:
public void setToMovePosition(float px, float py){
this.toMovePosition = new Vector2(px, py);
}
public Vector2 getToMovePosition(){
return this.toMovePosition;
}
感谢。
答案 0 :(得分:1)
sub(Vector2)
和nor()
这两种方法都会更改toMovePosition
对象的值,如source所示。
Vector2
类定义了一个复制构造函数,因此您可以像这样包装toMovePosition
- bodyNpc.setLinearVelocity(new Vector2(toMovePosition).sub(bodyNpc.getPosition()).nor());
这应该导致未修改的toMovePosition
对象。