ユニティちゃんでゲームを作ろう-01 part1からエラーで挫折

2017年7月16日C#, プログラミング

ユニティちゃんでゲームを作ろうという日経ソフトウェアのムック本を購入して、積み本になっていたのでこのタイミングで開いてみたのですが・・・

Unity環境整備、インストールで躓く

Unityの環境インストールから、まずすすめない。。

多分、動作環境が特殊?なのかもしれないのですが、付属DVDのUnityではライセンス認証でフリーズして進まなかった。バージョンが悪いのかと思い、最新のUnityをダウンロードして、インストールするもライセンス認証で同様に止まる。他のPC(Windows10)では難なくインストールできたため、Windows7が原因か?

とりあえず、オフラインでライセンス認証をしてインストールは完了。

part1でスクリプトエラーが出て進めない

最新の環境でなんとかインストールできたため、part1の「ジャンプ!スライディング!障害物ゲームを作ろう」を試してみる。

が、アニメーションをしようと思うと次のようなエラーが出て進めない。

Assets/UnitychanDash/Script/PlayerMove.(14,23): error CS1061: Type ‘UnityEngine.Component’ does not contain a definition for ‘frezeRotation’ and no extension method ‘frezeRotation’ of type ‘UnityEngine.Componet’ could be found. Are you missing an assembly reference?

たぶん、ものすごい初歩的なエラーであり、慣れている人ならすぐに原因がわかるのかもしれないのですが、現状のスキルでは何を行っているのかわからなかったorz

対策は?

ソースコードの “rigidbody” なんてどこにもねーよってことを言われている気がしたので、これを探して取ってくるように修正。

using UnityEngine;
using System.Collections;

namespace UnityChanDash
{
	[RequireComponent(typeof(Animator))]
	[RequireComponent(typeof(Rigidbody))]
	public class PlayerMove : MonoBehaviour
	{
		void Start ()
		{
			// アニメーションの移動距離を元に移動する機能を切る
			GetComponent<Animator> ().applyRootMotion = false;
			GetComponent<Rigidbody> ().freezeRotation = true;
		}

		void Update ()
		{
			// 移動値を求め、オブジェクトを移動させる
			Vector3 velocity = transform.forward * Time.deltaTime * 3;
			GetComponent<Rigidbody>().MovePosition (transform.position + velocity);
		}

		// gameObject.SendMessage("OnDead”);で呼び出されるメソッド
		void OnDead ()
		{
			enabled = false;
		}

		// gameObject.SendMessage("OnGoal”);で呼び出されるメソッド
		void OnGoal()
		{
			enabled = false;
		}
	}
}

本当にこれが正しいのかは現状わかりませんが、とりあえず動きました!

最近は Kindle Unlimited で無料で読めるらしいので、この機会にプログラミングしてみてはいかがでしょうか?
2018.08.14現在 Unlimited対象外になっておりました。

ユニティちゃんでゲームを作ろう (日経BPパソコンベストムック)
日経BP社 (2014-12-13)
売り上げランキング: 107,491