前提
unity2DでInput.mousepositionを使用してプレイヤーから見たマウスの角度を測り、オブジェクトの生成をしたい。
実現したいこと
unity2DでInput.mousepositionを使用して自分から見たマウスの角度を測定。その角度に向かってオブジェクトの生成
発生している問題・エラーメッセージ
引数 2: は 'UnityEngine.RaycastHit2D' から 'UnityEngine.Vector2' へ変換することはできません 演算子 '-' を 'RaycastHit2D' と 'GameObject' 型のオペランドに適用することはできません
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class RayExample : MonoBehaviour 6{ 7 [SerializeField] 8 GameObject _start; 9 10 [SerializeField] 11 RaycastHit2D hit; 12 void Start() 13 { 14 _start = gameObject; 15 } 16 private void Update() 17 { 18 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 19 20 float maxDistance = 10; 21 22 RaycastHit2D hit = Physics2D.Raycast(ray.origin,ray.direction, maxDistance); 23 float angle = GetAngle(_start.transform.position, hit); 24 Debug.Log(angle); 25 } 26 27 float GetAngle(Vector2 start, RaycastHit2D hit) 28 { 29 Vector2 dt = hit - _start; 30 float rad = Mathf.Atan2(dt.y, dt.x); 31 float degree = rad * Mathf.Rad2Deg; 32 33 return degree; 34 } 35}
試したこと
rayの成分から角度だけを取り出そうとしたがうまくいかなかった
変更・修正点
画像を追加してみてはどうだろかとの提案を受けて画像を追加しました。
また、質問の内容を少し修正しました。
変更前 unity2DでInput.mousepositionを使用してプレイヤーから見たマウスの角度を測りたい。
変更後 プレイヤーとクリックした座標を取得してその方向にオブジェクトの生成をしたい。
「自分」とは何か、「角度」とは何と何と何の角度なのかがわからないですね。絵でも描いて説明した方がよいのでは?
なお、「自分」と「カメラ」だけでは2つの点しか決まらない、つまり直線1つしか構成できないため「角度」はありません。「角度」を構成するには直線もしくは点がもう一つ必要です。
回答1件