一定の速度でキャラクタ(オブジェクト)を動かす場合

Posted コメントするカテゴリー: unity

・一定速度で移動する

this.transform.Translate(X軸移動量 * Time.deltaTime, Y軸移動量 * Time.deltaTime, Z軸移動量 * Time.deltaTime);

・一定速度で回転する

this.transform.Rotate(X軸回転量 * Time.deltaTime, Y軸回転量 * Time.deltaTime, Z軸回転量 * Time.deltaTime);

このやり方だと、物体は単純にx,y,zの方向に移動するだけなので、
人が歩くとか、動物が歩くとかのキャラクターの移動には使えないことが判明しました。

キャラクタを歩かせる(走らせる)にはキャラクターそのものに組み込んでいる
移動命令を発行しないとダメなようです。

キャラクター(オブジェクト)を動かす方法

Posted コメントするカテゴリー: unity

Inspectorの値を直接操作しても良いですが、もっと簡単にアニメーションさせる為の命令があります。

・移動

this.transform.Translate(「X軸方向」,「Y軸方向」,「Z軸方向」);

・回転

this.transform.Rotate(「X軸方向」,「Y軸方向」,「Z軸方向」);

上記の方法で、キャラクターを動かすことが可能です。

位置・サイズ・角度を取得・設定する

Posted コメントするカテゴリー: unity

ゲームオブジェクトには、世界全体に対する自分の位置と、自分と親子関係にあるオブジェクトとの位置があります
これらは、現在の値を取得することも,値を変更することも可能です

・ワールド位置

this.transform.position.x
this.transform.position.y
this.transform.position.z

・ワールド角度

this.transform.eulerAngles.x
this.transform.eulerAngles.y
this.transform.eulerAngles.z

・ワールドサイズ

this.transform.lossyScale.x
this.transform.lossyScale.y
this.transform.lossyScale.z

・ローカル位置

this.transform.localPosition.x
this.transform.localPosition.y
this.transform.localPosition.z

・ローカル角度

this.transform.localEulerAngles.x
this.transform.localEulerAngles.y
this.transform.localEulerAngles.z

・ローカルサイズ

this.transform.localScale.x
this.transform.localScale.y
this.transform.localScale.z

ゲームオブジェクトを検索するには

Posted コメントするカテゴリー: unity

スクリプトを Inspectorに設定した場合、自分自身は「this」です(記述を省略する場合がほとんどです)

他のゲームオブジェクトは,探す必要があります

・オブジェクト名で探す方法

var obj1 : GameObject = GameObject.Find("「Hierarchyに表示されている名称」");

・タグで探す方法

var obj1 : GameObject = GameObject.FindWithTag("「InspectorのTagに表示されている名称」");

thisの代わりに,この「obj1」変数を使います。

機能が決まった関数

Posted コメントするカテゴリー: unity

なにやらandroidとかの開発で使うメソッドみたいですが、unityで
標準的に使うメソッドです。

function Start(){
	//最初に一度だけ呼び出される
}

function Update(){
	//描画時に処理される
}

function OnCollisionEnter(col : Collision){
	//衝突判定用の処理をする
	if(col.gameObject.name == "「ゲームオブジェクト名」"){
		//それと衝突した。とか。
	}
}

使い方、書き方は色々あると思うので、まだまだこれから研究していきます。

Quaternion とは

Posted コメントするカテゴリー: unity

クオータニオンは4×4の行列のことです。
例として、回転を行う際に使用するようです

・x軸を中心に回転

this.transform.rotation = Quaternion.AngleAxis(「角度」, Vector3.right);

・y軸を中心に回転

this.transform.rotation = Quaternion.AngleAxis(「角度」, Vector3.up);

・z軸を中心に回転

this.transform.rotation = Quaternion.AngleAxis(「角度」, Vector3.forward);

後ほど実験した結果をここに書き足します。

Vector3 とは…

Posted コメントするカテゴリー: unity

unityでプログラムをしていると、必ず出てくるのがvectorというモノです。
これはなにを表しているのかというと、x座標、y座標、z座標の情報を
ひとまとめにしたものとのことです。

たとえば、以下のように書きます。

var a : Vector3 = Vector(X座標, Y座標, Z座標);

例) Vector3を使ってゲームオブジェクトに座標を設定する

var a : Vector3 = Vector3(0, 0, 0);
this.transform.position = a;

例) 現在位置をVector3に代入する

var a : Vector3 = this.transform.position;

のように使います。

unityでのjavascriptで、注意するメソッド

Posted コメントするカテゴリー: unity

プログラム上の微妙な違いがあるメソッドは次のとおり。(後日調整)

■初期化系

 Awake()
 Start()

■アップデート系

 Update()
 FixedUpdate()
 LateUpdate()

■Awake()とStart()の違い
Awake()はゲーム開始前に呼ばれもの。主に初期化に使うのが妥当です。
どのオブジェクトのAwake()から順番に呼ばれるかはランダム、
どのオブジェクトのStart()よりも前に呼び出される。
Awake()から他のオブジェクトの状態を参照するような処理はしない方がよい。
そうした処理はStart()に任せるべき。

■LateUpdate()の特徴
全てのオブジェクトのUpdate()が呼び出された後に呼び出される。
LateUpdate()は例えば、追跡カメラの処理と相性が良い。
Update()で全てのオブジェクトの移動処理が終わった後で、追跡カメラの座標を決められるから。

■Update()とFixedUpdate?()の違い
Update()は毎フレーム呼び出されるが、FixedUpdate()は指定されたフレーム毎に呼び出される。
この特性から、FixedUpdate()は特にRigidbody(剛体)に対する処理、新しく力を加えるなどに向いている。

windows7でのunityでandroidへの書き出しがエラーになる件

Posted コメントするカテゴリー: unity

先日unityからandroid端末への書き出しをしようとすると、いきなりエラーが出てきました。

内容は

Error building Player: UnityException?: Unable to find suitable jdk installaion Please make sure you have a suitable jdk installation. Android development requires at least JDK 6 (1.6). The latest JDK can be obtained from the Oracle http://www.oracle.com/technetwork/java/javase/downloads/index.html

というもので、なにやらjdk関係が悪いとのこと。
jdkのバージョンを変えて(ダウングレードして)再インストールしてみると、エラーメッセージは出なくなりました。

jdk依存するとは思えなかったけれど、unityのバージョンと関係あるのだろうか。
まだまだ未知なところがあります。

unityでよく操作するオブジェクト

Posted コメントするカテゴリー: unity

unityでコーディングする際に、よく操作するオブジェクトは下記のものになります。

詳しい使い方がわかってきたら、またここに書こうと思います。

・Vector3
3次元情報を格納するオブジェクト。
x,y,zの値を持つベクトル。位置情報を


・Input
ユーザからの入力を一元管理している。
キーボードからの入力、タッチイベント、端末の傾き等の情報、等を制御するときに使用する。


・GameObject
ゲーム空間(シーン)の中に存在するものは全てこれ


・Component
GameObjectにアタッチすることで、GameObjectがどう振る舞うか定義できる。


・Transform
Componentの一種。ゲーム内の全てのGameObjectについていて、位置、回転、サイズが格納されている。