2

こんにちは私はエアホッケータイプのゲームを作ろうとしていますが、パドルムーブメントコンポーネントの実装に問題があります。setLinearVelocityを使用して、andengineのbox2d拡張機能を使用して、ボディ(パドル)をタッチの位置に移動するにはどうすればよいですか?私がそれをやろうとすると、ボールは一見ランダムな経路で動きます。

これが私が試したことです。

@Override
    public boolean onSceneTouchEvent(Scene pScene, TouchEvent p) {

            if(p.isActionDown()){
                moveAir(p.getY(),p.getX());
            }else if(p.isActionMove()){
                moveAir(p.getY(),p.getX());
            }else if(p.isActionUp()){
                myPad.setLinearVelocity(0, 0);
            }


        return false;
    }

    private void moveAir(float y, float x) {
        x=x/32;
        y=y/32;



        if(myPad.getLocalCenter().x>x){
            myPad.setLinearVelocity(myPad.getLinearVelocity().x-10, myPad.getLinearVelocity().y);
        }else if(myPad.getLocalCenter().x<x){
            myPad.setLinearVelocity( myPad.getLinearVelocity().x+10,  myPad.getLinearVelocity().y);
        }else{
            myPad.setLinearVelocity(0, myPad.getLinearVelocity().y);
        }


        if(myPad.getLocalCenter().y>y){
            myPad.setLinearVelocity(myPad.getLinearVelocity().x,myPad.getLinearVelocity().y-10);
        }else if(myPad.getLocalCenter().y<y){
            myPad.setLinearVelocity( myPad.getLinearVelocity().x,myPad.getLinearVelocity().y+10  );
        }else{
            myPad.setLinearVelocity(myPad.getLinearVelocity().x, 0);
        }
    }
4

2 に答える 2

3

Box2Dには、まさにこのタイプの相互作用のための特別なタイプのジョイントがあります。タッチしたオブジェクトに「マウスジョイント」を使用したい。

andengineフォーラムにはすでに素晴らしいmousejointチュートリアルがあります: http ://www.andengine.org/forums/tutorials/tut-box2d-mousejoint-drag-and-drop-t1156.html

于 2013-03-05T01:33:56.290 に答える
1

setLinearVelocity提案に感謝しますが、マウスの関節よりも使用が簡単であることがわかりました。

float linearVelocityX = (TouchX - myBody.getPosition().x);
float linearVelocityY = (TouchY - myBody.getPosition().y);
Vector2 linearVelocity = new Vector2(linearVelocityX, linearVelocityY);
myPad.setLinearVelocity(linearVelocity);
于 2013-03-06T22:36:11.923 に答える