前提・実現したいこと
ユニティでキャラクターを進行方向に向くようにしたいのですが、移動ボタンを離すと向きが初期状態に戻ってしまいます
プログラムは初心者で、プログラムは過去にCを少しかじった程度です、Unityの教科書やユニティちゃんが教える!初心者向けUnity講座
見たり、ネットのコードをコピーして、どこがどの動作してるのとか見ながら、コメントを書いて勉強しつつコードの追加というやり方で独学しています
回転情報の保持して更新していかないといけないのはなんとなくわかるのですが、具体的にどうしていったらいいのかがわからず
それとエラーメッセージではないのですが下記のログが出続けてしまうのもよく分かっておりません
元々イラストや3Dの勉強していた身ですので絵的なイメージしやすい説明していただけると助かります
何卒よろしくお願いします
発生している問題・エラーメッセージ
Look rotation viewing vector is zero UnityEngine.Quaternion:LookRotation (UnityEngine.Vector3) SHIGURU_move:Update () (at Assets/SHIGURU_move.cs:59)
該当のソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SHIGURU_move : MonoBehaviour
{
private float Speed = 50F;
private float jumpSpeed = 100f;
public float Mass = 50f;
public float Gravity = -9.8f;
[SerializeField]
AnimationCurve curve;
// movedirection移動方向用変数=zeroでverctor3の(x,y,z)の3軸の数値を0にしてる
private Vector3 MoveDirection = Vector3.zero;
private CharacterController controller;
void Start()
{
//つけられてるコンポーネントの情報(x.y.z)を参照
controller = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
//もしcontrollerの座標がisGrounded(地面に)ついていたら if (controller.isGrounded) { //=newで新しい追加情報?を与えて(Input.GetAxis("横"), 0.0f, Input.GetAxis("前後")) MoveDirection = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical")); //=で新しくさっき格納した(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical"));に入力ボタンでの移動スピードの情報を追加 //さっきの文にInput.GetAxis("Vertical") * Speedでも可能だった、見やすさ重視? MoveDirection = MoveDirection * Speed; //進行方向に向きを直す transform.rotation = Quaternion.LookRotation(MoveDirection); //ジャンプ if (Input.GetButton("Jump")) { jumpSpeed += 1.5f; // Mathf.Clampは(現在, 最小, 最大)で最小か最大を超えようとしたとき、最小か最大の値が左辺にあてはめられる jumpSpeed = Mathf.Clamp(jumpSpeed, 100, 250); } if (Input.GetButtonUp("Jump") || jumpSpeed == 250f) { //transform.Translate(0, 10, 0); //変数MoveDirextionのどこに力を加えるかを.yで上下に指定 xだと横 MoveDirection.y = jumpSpeed * curve.Evaluate(Time.deltaTime); Debug.Log(jumpSpeed); //ジャンプ後 力を初期値に jumpSpeed = 100f; } } //重力のかかる方向Y=Y方向の飛ぶ力から - (重力*時間=落下速度で力を引いてる MoveDirection.y = MoveDirection.y + (Gravity * Mass * Time.deltaTime); //controllerにMove機能(格納されてる各方向への移動する力とボタン情報 * 時間)重力による摩擦係数? controller.Move(MoveDirection * Time.deltaTime); }
}
補足情報(FW/ツールのバージョンなど)
Microsoft Visual Studio Community 2019
Version 16.7.7
VisualStudio.16.Release/16.7.7+30621.155
Microsoft .NET Framework
Version 4.8.04084
インストールされているバージョン:Community
Visual C++ 2019 00435-60000-00000-AA328
Microsoft Visual C++ 2019
C# ツール 3.7.0-6.20514.1+600c0dadd199296df3ed07dfabdc014563a77f7c
IDE で使用する C# コンポーネント。プロジェクトの種類や設定に応じて、異なるバージョンのコンパイラを使用できます。
IntelliCode 拡張機能 1.0
IntelliCode Visual Studio 拡張機能の詳細情報
Microsoft JVM Debugger 1.0
Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines
Microsoft MI-Based Debugger 1.0
Provides support for connecting Visual Studio to MI compatible debuggers
Microsoft Visual C++ ウィザード 1.0
Microsoft Visual C++ ウィザード
Microsoft Visual Studio VC パッケージ 1.0
Microsoft Visual Studio VC パッケージ
NuGet パッケージ マネージャー 5.7.0
Visual Studio 内の NuGet パッケージ マネージャー。NuGet の詳細については、https://docs.nuget.org/ にアクセスしてください
ProjectServicesPackage Extension 1.0
ProjectServicesPackage Visual Studio Extension Detailed Info
Visual Basic ツール 3.7.0-6.20514.1+600c0dadd199296df3ed07dfabdc014563a77f7c
IDE で使用する Visual Basic コンポーネント。プロジェクトの種類や設定に応じて、異なるバージョンのコンパイラを使用できます。
Visual Studio Code デバッグ アダプターのホスト パッケージ 1.0
Visual Studio Code デバッグ アダプターを Visual Studio でホストするための相互運用レイヤー
Visual Studio Tools for Unity 4.7.1.0
Visual Studio Tools for Unity
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/05 10:31