1

理由はわかりませんが、コードのこの部分で変数が変更されています: 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; 
}

ありがとう。

4

1 に答える 1

1

sourceでわかるように、両方のメソッドsub(Vector2)とobjectnor()の値を変更します。toMovePosition

Vector2クラスにはコピーコンストラクターが定義されているため、このようにラップできますtoMovePosition-bodyNpc.setLinearVelocity(new Vector2(toMovePosition).sub(bodyNpc.getPosition()).nor());
これにより、変更されていないtoMovePositionオブジェクトが生成されます。

于 2013-10-05T19:11:36.490 に答える