[解決済み】Unity - Gameobjectがマウスを見る
2022-01-27 15:12:30
質問
問題が発生しました。
基本的なセットアップは、カメラとプレイヤーオブジェクトの2つです。
プレイヤーはWASDのTransformで移動し、マウスで回転するようになっています。 の動きです。
カメラはトップダウン(3psのような角度で、プレイヤーオブジェクトをカメラの中心に置き、プレイヤーの回転に合わせて回転します)です。
これがプレイヤーの移動スクリプトです。
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour
{
public int playerSpeed = 8; //players movement speed
void Update () {
if (Input.GetKey ("w"))
{
transform.Translate (Vector3.forward * Time.deltaTime * playerSpeed); //move forward
}
if (Input.GetKey ("s"))
{
transform.Translate (Vector3.back * Time.deltaTime * playerSpeed); //move backwards
}
if (Input.GetKey ("a"))
{
transform.Translate (Vector3.left * Time.deltaTime * playerSpeed); //move left
}
if (Input.GetKey ("d"))
{
transform.Translate (Vector3.right * Time.deltaTime * playerSpeed); //move right
}
}
}
これは選手交代用のスクリプトです。
using UnityEngine;
using System.Collections;
public class mouseLook : MonoBehaviour {
private Vector3 inputRotation;
private Vector3 mousePlacement;
private Vector3 screenCentre;
void Update () {
FindCrap();
transform.rotation = Quaternion.LookRotation(inputRotation);
}
void FindCrap () {
screenCentre = new Vector3(Screen.width * 0.5f,0,Screen.height * 0.5f);
mousePlacement = Input.mousePosition;
mousePlacement.z = mousePlacement.y;
mousePlacement.y = 0;
inputRotation = mousePlacement - screenCentre;
}
}
私が示したすべての結果は、回転しますが、マウスが物理的に存在する場所に忠実に回転するわけではありません。
マウスで円を描いている間、全回転はしますが、マウスがある場所を一貫して指しません。なぜなのかはよくわかりません。
カメラ(プレイヤーオブジェクトの子)がプレイヤーの移動と回転に追従し、プレイヤーは移動スクリプトで移動し、マウスの位置を正確に指すように回転することが望ましい結果です。
どなたかアイデアをお持ちの方はいらっしゃいませんか?よろしくお願いします。
編集:参考になればと思いますが、現在の回転はこのような仕組みになっています。
マウスでプレイヤーの周りに大きな円を描くと、プレイヤーの周りに極端に狭い円を描くよりもゆっくりとした回転になります。
解決方法は?
何をしようとしているのか理解できないのですが。もし、ゲーム「Dead Nation」のようなことをしようとしているのであれば、次のようなことを提案したいと思います。
マウスルック.cs
void Update()
{
Vector3 mouse = Input.mousePosition;
Vector3 mouseWorld = Camera.main.ScreenToWorldPoint(new Vector3(
mouse.x,
mouse.y,
player.transform.position.y));
Vector3 forward = mouseWorld - player.transform.position;
player.transform.rotation = Quaternion.LookRotation(forward, Vector3.up);
}
もしカメラをプレーヤーと一緒に移動、回転させたい場合は、カメラをプレーヤーオブジェクトの子オブジェクトにすればよいでしょう。
関連
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません