unity3d レベル1 -2ページ目

unity3d レベル1

unity3dでゲーム作りはじめました。
http://knr.ifdef.jp/
twitter: @knorsUni

Intuos3→Bamboo


unity3d レベル1


・Good
ノートぐらいのサイズ、厚さが嬉しい
使い心地はIntuos3と比べて遜色ない。
値段お手ごろ。


・Bad
線が横にあるのが邪魔。
Intuosもそうだけどペンタブにファンクションキーは求めていない。→全部無効化


歳かな。新機能というものを悉く否定したくなる。タッチ機能とかタッチ機能とかタッチ機能とか。



unity3d レベル1

指定した位置を通過してゴール地点へ。
キューブが指定した位置に辿り着く前に別の地点をクリックすると迷子になる時がある。


-------------------------------------------
球体をクリックしてね
動作確認:http://db.tt/fIEwOELl


unity3d レベル1

最短経路の検索方法について調べるとダイクストラ法やA*などのアルゴリズムが見つかります。

数学に疎いんでその式とか分からなかったけど自分なりにやってみた。


1.すべての地点に大きい値を仮に記録(A'、B'、C'・・・)

2.A地点からB地点までの距離(AB)を計り、B地点の記録(B')より小さい値なら上書き。

3.B地点からC地点までの距離(BC)を計り、ABを足す。C地点の記録('C)より小さい値なら上書き。

4.2と3を繰り返して目標地点までたどり着いたら計測終了。


という考え方。

最初に大きい値を入れておくのは、距離を計った時小さい値だったら上書きとするので最初は確実に上書きして欲しいから。


距離の計り方は

http://docs.unity3d.com/Documentation/ScriptReference/Vector3.Distance.html

を使った。


次の地点の検索方法が分からなかったので、target(画像のスフィアのオブジェクト)を作って、スクリプトで

var targetA : GameObject;
var targetB : GameObject;
var targetC : GameObject;

みたいに作っておきInspectorでtargetを入れる。

自分の位置から各targetに対して距離を計り、そのtargetに数値をSendMessageして、

さらにそこから次の地点(各target)に対して同じことをする。


※各地点の位置は変わらないので、これなら最初に距離を計ってその値を保存したほうが処理が軽いのかも?


デメリットとして、Inspectorでtargetを手動で入れるのがとても面倒。

targetの数が100とかになったら多分物理的に無理。


---------------------------------------------------------------------------------------

スフィアをクリックしてね

動作確認webPlayer:http://db.tt/hDAFvzBF

プロジェクト package (unity4):http://db.tt/S80Hk2W4