0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

画面タッチで左右に移動をさせたかった話

Posted at

はじめに

2D横スクロールで
画面右側に触れていたら右へ移動
画面左側に触れていたら左へ移動
というのがやりたかった

つまずいた点

タッチ操作をするとキャラクターが左右に動き続けてしまう

初心者の私が考える原因

アクションにPointerのPositionを設定すると
canceledが発火しない

解決法

InputSystemのアクションやらバインドやらをぽちぽちすることで解決したかったが
TouchStateなるものを使うことで何とかなった
もっと簡単な方法とは思う…ぜひ教えて欲しい…

とりあえず必要なコード全文

    using UnityEngine.InputSystem.LowLevel;
    
    private TouchState _touchState;
    
    public void _onMove(InputAction.CallbackContext context)
    {
        _touchState = context.ReadValue<TouchState>();
        var touchPosition = _touchState.position;

        float screenWidth = Screen.width;

        // タッチ位置が画面のどちら側か判定
        if (touchPosition.x < screenWidth / 2)
        {
            _inputDirection = Vector2.left;
        }
        else
        {
            _inputDirection = Vector2.right;
        }

        if (!_touchState.isInProgress)
        {
            _inputDirection = Vector2.zero;
        }
    }
}

ポイントはこれ↓

if (!_touchState.isInProgress)
{
    _inputDirection = Vector2.zero;
}

touchStateのisInProgressを取得することで触れているかどうかを取得できた

おわりに

もっといい方法があると思いつつも他の方法で解決できないので
一旦このようになりました

もっといいやり方があればぜひコメントなどで教えていただけると助かります…

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?