結論からですがこの記事で提案するのは
「方向入力の原点を変えること」です。
操作感が悪い原因として考えられるのが、
左に行こう!
↓
左にドラッグ
↓
上に行こう!
↓
上にドラッグ
↓
左上に行っちゃった!!
ってパターンです。
これじゃない人この記事見ても無駄です。さようなら。
これに対する対策として、ある程度の距離以上ドラッグされた場合、ドラッグの原点を現在の指の位置に近づけることです。
左にドラッグしたときドラッグの原点自体が指についていけば、その後上にドラッグしたとき正しく上向きにキャラが動いてくれます。
コードはこんな感じ↓
Vector2 position; //現在の指の位置
Vector2 rawPosition; //ドラッグ開始時の指の位置
void Update()
{
//ドラッグ方向を取得
Vector2 dragVector = (position - rawPosition).normalized;
//画面幅の1/4以上ドラッグしていた場合ドラッグ原点を移動
if((position - rawPosition) >= Screen.width/4)
{
/*
ドラッグ原点を移動する。指の位置からドラッグ方向×画面幅の何割か
を引くことで、例えば左にドラッグした場合指の少し右に原点が来て、
左向きの方向入力は継続される。
*/
rawPosition = position - dragVctor * Screen.width / 7
}
}