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

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

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

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

解決済

進行方向に向き続けるように

RYU_L
RYU_L

総合スコア1

C#

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1回答

0評価

0クリップ

550閲覧

投稿2022/01/04 14:51

前提・実現したいこと

ユニティでキャラクターを進行方向に向くようにしたいのですが、移動ボタンを離すと向きが初期状態に戻ってしまいます
プログラムは初心者で、プログラムは過去に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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。