

Unity2dで全方位シューティングを作っています。  
マウスのカーソル位置を正面としてWASDでの移動を実装したいです。  
  
XY軸でのWASD移動や、実機（プレイヤー）位置とマウス位置の二点間などの  
簡単な移動方法ぐらいしかわかりません。

マウス位置軸のWASD移動が調べても分からず、また方法が思いつかないです。  
視点（傾き）軸のWASD移動って言った方が分かりやすいかもしれないので  
イメージを補足すると、

向いてる方向（マウスの位置）にWキーで前進。  
Wキーを押し込みながらのマウス操作だけでも移動ができる感じです。  
Vector3.MoveTowardsで前後移動から、  
左右の動きを追加しようと頑張ってみましたが追加できませんでした。

そもそもこの移動方法の時は、Vectorじゃない方がいいのか、  
CharacterControllerやRigidBody等、他のほうが良いのさえわからないです。

WASD操作でマウスポインターの向きに攻撃する様なわかりやす機体はいるので  
ちょっと変わった操作の機体を追加したかったのですが難しそうですかね。

似たような動きでもよいのでアドバイスお願いいたします。


CC BY-SA 4.0
2022-05-25T10:16:34.423
89048
2022-05-25T11:08:51.417
52797
question
c# unity2d
Unity 2dで実装したい操作（移動）についてのアドバイスが欲しいです。


作るのは簡単だけど、操作するのは難しいと思います。

[code]

    using UnityEngine;
    
    [RequireComponent(typeof(Rigidbody2D))]
    public class Movement : MonoBehaviour
    {
        [SerializeField] float _speed = 3f;
        Rigidbody2D _rb = default;
    
        void Start()
        {
            _rb = GetComponent<Rigidbody2D>();
            _rb.gravityScale = 0;
            _rb.freezeRotation = true;
        }
    
        void Update()
        {
            Vector3 lookAtPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            lookAtPosition.z = transform.position.z;
            transform.up = lookAtPosition - transform.position;
            float h = Input.GetAxisRaw("Horizontal");
            float v = Input.GetAxisRaw("Vertical");
            _rb.velocity = transform.TransformVector(new Vector3(h, v, 0).normalized) * _speed;
        }
    }
    
[/code]


CC BY-SA 4.0
2022-05-25T11:08:51.417
89052
2022-05-25T11:08:51.417
48297
89048
answer