実現したいこと
移動中でも腕が動くようにしたい。
発生している問題
プレイヤーが移動中、子オブジェクトの腕についている
マウスの位置に腕が向くようにするスクリプトが反応しない。
該当のソースコード
//マウスの位置取得(ローカルからワールド座標へ変換) mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector2 lookDir = mousePos - rb.position; float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 270f; rb.rotation = angle;
試したこと
実は弾丸を撃つスクリプトに
////クリックした場所の座標の取得(スクリーン座標からワールド座標に変換) //Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); //// 向きの生成(Z成分の除去と正規化) //Vector3 shotForward = Vector3.Scale((mouseWorldPos - transform.position), new Vector3(1, 1, 0)).normalized;
というコードを書いた時は、腕オブジェクト同様反応しなかったので、別な処理を書いたことで解決しました。
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
というコードは親オブジェクトが何かしら動いているときは反応しないのでしょうか?
補足情報
腕の子オブジェクト(プレイヤーからの孫オブジェクト)についているスクリプトは反応する。(弾丸を撃つというスクリプト)
「反応しない」とはどういう意味ですか?「実行されない」という意味ですか?それとも、「実行されるが、その実行結果が自分の意図したものと違う」という意味ですか?前者だとしたら、それはどうやって確認しましたか?後者だとしたら、どういう意図で書いたどの部分のコードが実際はどのように動きましたか?
3D ゲームですか?2D ゲームですか?多分 2D だと思いますが、Camera の Projection は Orthographic ですよね?mousePos として変換した Vector3 の値に何が入っているかは確認していますか?
実行されないという意味で
親と孫オブジェクトに、クリックされたらDebug.Logで文字を表示させるコードを書いたら
孫の方のみ文字が表示されたので
親についているスクリプトが実行されていないんだなと判断しました。
Orthographicに設定してあります。
Vector3の値に何が入ってるか確認とはどういう意味でしょうか?
回答1件
あなたの回答
tips
プレビュー