ページ 11

onTouchEventを利用した自機の移動

Posted: 2016年7月17日(日) 00:45
by bison
初めて質問させていただきます。現在Javaでhttp://dixq.net/Android/index.phpのイライラ棒を改造して自機をセンサーではなくタッチで移動させようとしています。一応動くには動くのですが動作が自分の望むものにはなってくれません。画面をスライドしたらそれについてくるようにしたいのですが離れたところをスライドするとワープしてしまいます。どうしたらよいでしょうか。また、リトライしたときに取得した座標が引き継がれてしまいます。初期化して最初のスタート位置からリスタートしたいのですがやり方がわかりません。アドバイスお願いします。

コード:

MainActivity
@Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                _x = event.getX();
                _y = event.getY();

                break;

            case MotionEvent.ACTION_MOVE:
                _x = event.getX();
                _y = event.getY();

                break;

            case MotionEvent.ACTION_CANCEL:

                _x = 0;
                _y = 0;

                break;

        }

コード:

Player
    public Player(){
        _cir = new Circle( 500, 30, SIZE );      //(240,0)の位置にSIZEの大きさの円を作る
        _paint.setColor(Color.BLUE);            //色を青に設定
        _paint.setAntiAlias(true);                      //エイリアスをオン
    }

    // 移動ベクトルの向いている方に動かす
    private void Move() {
        float x = MainActivity.getX();
        float y = MainActivity.getY();
        _cir._x = x;
        _cir._y = y;
    }


    @Override
    public boolean onUpdate(){
        setVec();       //移動ベクトルをセットする
        Move();         //移動ベクトルが向いている方に動かす
        return true;
    }

Re: onTouchEventを利用した自機の移動

Posted: 2016年7月17日(日) 02:05
by hide
PlayerクラスのMoveの中にある

コード:

float x = MainActivity.getX();
float y = MainActivity.getY();
が何やってるかわかっていますか?

Re: onTouchEventを利用した自機の移動

Posted: 2016年7月17日(日) 08:56
by bison
返信ありがとうございます。float x =MainActivity.getX();でタッチしたx座標をxに入れてそれを自機のx座標に入れてしまうからワープしてしまうということはわかっています。言葉足らずですみません。

Re: onTouchEventを利用した自機の移動

Posted: 2016年7月17日(日) 17:43
by hide
返信ありがとうございます。float x =MainActivity.getX();でタッチしたx座標をxに入れてそれを自機のx座標に入れてしまうからワープしてしまうということはわかっています。言葉足らずですみません。
もともとあのイライラ棒アプリのAcSensorのgetXをMainActivityに移したものだと思うのですが、
AcSensorはシングルトンだったりして、移植の際にその辺りどのように調整したのかとか
色々と説明したいただかなければならない部分があるはずなんですが。。
よくわからないまま進めていらっしゃるのでしょうか?