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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

解決済

4回答

3200閲覧

unity で RPG を作っています。

haruru

総合スコア12

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2015/06/11 15:16

こんばんわ。

unityで
現在、私は簡単なRPGを作成しています。

私はグラフィッカーで、あまりにもプログラムの知識がありません。

見よう見まねで、キャラクターが上下左右に移動するようにはなったのですが、
移動方向に向いてくれません。
向きを向くような記述をしているつもりですが、動きません・・

質問の仕方が悪いかもしれませんが、申し訳ないです。

以下コードです。
お答え、もしくはヒントが頂戴できれば、非常に助かります。
何卒、宜しくお願いいたします。

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {
public float walkSpeed = 10.0F;
public float translation;
public float rotation;

// Use this for initialization void Start () { } // Update is called once per frame void Update () { float dx = Input.GetAxis ("Horizontal")*walkSpeed; float dz = Input.GetAxis ("Vertical")*walkSpeed; transform.Translate (-dx, 0.0F,-dz); if (!forceRotate) { Quaternion characterTargetRotation = Quaternion.LookRotation (direction); transform.rotation = Quaternion.RotateTowards (transform.rotation, characterTargetRotation, rotationSpeed * Time.deltaTime); } }

}

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

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

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

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

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

guest

回答4

0

ベストアンサー

すいません。私の凡ミスの可能性が...

日本語のコメントがあると思うのですが、それを全て消してください。
多分というか、普通にMonoDevelopを使っていますよね?Monoは基本的に日本語アウトです。
少し調べた限りではエラーの内容的にその可能性が高いです。

動作自体の確認のために、新規プロジェクトにC#のtestファイル、コピペ、Cubeに乗せで試してみてください。

一応こちらで新規プロジェクトに丸々コピペ、新規Cubeに乗っけただけで動作は確認できました。Monoを使って試しましたが痛Monoに変わってますので何とも言えないです。

それで普通に動くようなら他の理由の可能性もありますが、検索かけて一番最初に引っかかったのが日本語の問題でしたので、多分その可能性が高い気がします。

私はVisualStudio2013を使っています、Windowsを使っていて、
他に比べて起動が重いのが気にならない、
全てのダウンロードに2時間近くかかる、
ついでにVisual Studio Tool for Unityもダウンロードして数十分、それから設定して、
という作業が苦でないならVisual Studioをおすすめします。
C#を使うなら別格で使いやすいですから。

投稿2015/06/11 18:54

編集2015/06/11 19:00
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

haruru

2015/06/12 01:21

ありがとうございます! 動きました。 エラーの原因としては、たぶん日本語の部分でした。 それと、もうひとつのエラーが出る場合があり、それはクラス名の不一致でした・・ これは私の再確認ミスですね・・ 長々とお付き合いいただきありがとうございます! 勉強になりました! PS. ただ、、カメラに対しては回転したくない、という挙動がゴールとなりますので、 (ドラクエみたいな挙動です)引き続き勉強してみます。
haruru

2015/06/12 01:23

と思ったら、キャラのノードにカメラを入れていたのが原因でした! 問題ありませんでした! なので、次はカメラの問題の解決に向けてがんばります!
guest

0

コンパイルエラーならIDE側で出ますよね?
それ、Unity側のエラーですよね?
スクリプト直してください、みたいな...

下のヤツは消したスクリプトがコンポーネントに参照が残ってて見つかりません、っていう意味ですのでエラーはエラーなのですが、動作には関係ないです。コンポーネントのscriptがmissingってなってるの右クリックからRemove Componentで消せばよいです。

scriptはコンポーネントされてますでしょうか?

投稿2015/06/11 17:47

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

haruru

2015/06/11 18:08

Unity側のエラーです。 スクリプトはひっついています。 今いったん消して、付け直そうとしましたが、やはりコンパイルエラーを直してください、というような警告文が出て割り当てられない状態です。 以下の上下左右に動くだけの状態で上書きすると動くようになるので、 その状態でスクリプトを上書くと先ほどのエラーが出てしまいました。 明日、私の記述にミスが無いか確かめて見ます。 using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { public float walkSpeed = 10.0F; public float translation; public float rotation; // Use this for initialization void Start () { } // Update is called once per frame void Update () { float dx = Input.GetAxis ("Horizontal")*walkSpeed; float dz = Input.GetAxis ("Vertical")*walkSpeed; transform.Translate (-dx, 0.0F,-dz); } }
guest

0

もしかして全角空白とかまざっちゃた感じでしょうか?
動作確認、VSからコピペったんで多分動くはずなんですが、、、

エラーの内容教えていただけませんか?

もしかしてクラス名がtestになっちゃてるせいですかね?

投稿2015/06/11 17:15

編集2015/06/11 17:19
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

haruru

2015/06/11 17:32

クラス名を変えるとGAMEの▲再生ボタンを押せずにコンパイルエラーです。 testですと、再生ボタンは押せますがinspector上で ”The associated script can not be loaded. Please fix any compile errors and assign a valid script" とエラーが出てしまいます。 console上は "The refernced script on this Behavior is missing!" というエラーが出ています。 どうでしょうか?
haruru

2015/06/11 17:33

全角空白に関してはコピペ以外に何度か手入力もしてみたのですが、 だめでした。 私のほうにミスがあったのかもしれません。
guest

0

using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {

float moveSpeed = 0.1f; float rotationSpeed = 0.1f; Vector3 movePosition; Quaternion rotation; void Update() { float x = Input.GetAxis("Horizontal") * moveSpeed; float z = Input.GetAxis("Vertical") * moveSpeed; // x,yそのまま移動したい量です。 movePosition = new Vector3(x, 0, z); // なのでpositionにそのまま足します。 transform.position += movePosition; // ゼロならここで打ち切ります。 if (movePosition == Vector3.zero) return; // 最終的に向きたい角度です。 rotation = Quaternion.LookRotation(movePosition); Rotation(); } // 回転します。 void Rotation() { // rotationSpeed分だけ向きたい角度に近づきます。1だと直接その方向になります。 transform.rotation = Quaternion.Lerp(this.transform.rotation, rotation, rotationSpeed); }

}

投稿2015/06/11 16:21

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

haruru

2015/06/11 16:46

早速の回答ありがとうございます。 いったんそのまま記述させてみたのですが、コンパイルエラーしてしまいました。 どの箇所かは分からないのですが・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問