質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

799閲覧

Unityの2Dトップビューでキャラを回転Zでマウスの方向に向かせたい

35Riel

総合スコア31

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2022/06/02 13:47

編集2022/06/03 22:14

前提

先日Unity入門書を読み終えたので現在トップビューの2Dゲームを作っています

実現したいこと

タイトル通り操作キャラの[Rotation Z]をマウスのワールド座標のある方向に向かせたい
ただし移動はwなら上、sなら下、aなら左、dなら右固定とする
添付画像の通りキャラは一枚のimage画像だけで出来ています
イメージ説明

発生している問題・エラーメッセージ

対処方法が見つかりません

試したこと

wasdによる上下移動と

[SerializeField] protected float xSpeed = 1.5f, ySpeed = 1.5f; private Vector2 moveDelta; protected void CharacterMovement(float x, float y) { moveDelta = new Vector2(x * xSpeed, y * ySpeed); transform.Translate(moveDelta.x * Time.deltaTime, moveDelta.y * Time.deltaTime, 0); }

マウス座標のワールド座標変換は書けました

private void FixedUpdate() { moveX = Input.GetAxisRaw("Horizontal"); moveY = Input.GetAxisRaw("Vertical"); CharacterMovement(moveX, moveY); mousePos = mainCam.ScreenToWorldPoint(Input.mousePosition); }

こちらのサイトに似たような方法がありましたがこれだと前進した場合マウスの方に行ってしまいます。
検索してもなかなか対処法が見つからない為こちらの参考書を購入しようかと思いましたがこの質問内容に対する答があるかないかを確認するためだけに購入する事が出来ません
有識者の方、どうか知恵をお貸しください


補足
キャラがどこを向いていても移動はワールド座標に依存する
イメージ説明
イメージ説明
イメージ説明


さらに補足

moveX = Input.GetAxisRaw("Horizontal"); moveY = Input.GetAxisRaw("Vertical"); CharacterMovement(moveX, moveY);

での入力ではなく

public float speed = 10.4f; Vector3 pos = transform.position; if (Input.GetKey("w")) { pos.y += xSpeed * Time.deltaTime; }

のような入力方式(こちらを参考)にしたところ想像していた移動を実装することが出来ました!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bboydaisuke

2022/06/02 16:25 編集

同じようなものをここ https://ja.stackoverflow.com/questions/89048/ で答えてるので、適当に直して使ってください。ポイントは transform.up = lookAtPosition - transform.position; でローカル座標系の上方向をマウスの方向に向けているところです。
bboydaisuke

2022/06/02 16:26

あと、FixedUpdate で入力を受け付けてはいけません。Update で受け付けましょう。
35Riel

2022/06/03 02:27

ポイントのtransform.upをrightに変えることで正面を向かせることは出来ました 移動に関する内容が私の説明不足だったので補足を追記しました。 bboyさんの貼ったコードを参考にすると移動がキャラの向きを軸としてしまうため非常に操作が難しくなってしまいます。 カメラの座標を親とすることで解消できるかと考えましたので今から行動しようと思います
bboydaisuke

2022/06/03 02:31

方向だけ参考にして移動は自分で書けばいいと思いますよ。
35Riel

2022/06/03 03:40

教えていただいた通り移動は違う書き方をしたら思うように移動できるようになりました!コードは追加したさらに補足 に書きました。 問題は解決しましたがちょっとした相談よろしいでしょうか。 自身が目指してるゲームはこちら(URL直貼りごめんなさい) https://www.youtube.com/watch?v=UDaVPzI5alM なんですが、自身が読んだ入門書というのが簡単な2d脱出ゲームと物理パズルを作成するもので、目指すゲームに関する知識がほぼ0に近い状況です。 現状こちら(URL直貼りすみません) https://www.youtube.com/watch?v=5w961c7hC_U&t=1776s を参考にしています もし私が目指しているゲームに関する参考書があればそれも利用したいと考えています。 キャラ移動だけで6時間ほど使ってしまっている為何か良い参考書があれば教えてください。
guest

回答1

0

自己解決

投稿されたヒントを元に実現したい処理を実装できました

投稿2022/06/03 13:14

35Riel

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問