強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Boo言語でUnityプログラム


Unityで使える言語の紹介で存在が忘れられていたり、使ってる人居るの?と言われ可哀想な状態になってるBooの事について書いておこうと思います。Pyfesに来てる事ですし…

BooはPythonの方言。Python+.NET(正確に言うとMono)な感じです。この辺はUnityのJavaScript(UnityScript)がJavaScript+.NETな感じと同じです。

UnityのAPIリファレンスにもちゃんと使用例付きで情報が有ります(マニアックな機能だと無い様な時も有りますが…)。

Booについての日本語の資料はこちらのスライドとかが良いですがこちらだとPythonやUntiyの他の言語について既に知ってる人以外には結構、難易度が高いと思います。ざっと読んでみて難しいかな?と感じたら慣れてきてからまた読みなおした方が良いかもしれません。

北海道のゲーム制作コミュニティ「Kawaz」でもBooについての記事が書かれました。

Kawaz - UnityでBooを使ってシューティングを作ろう:その1
http://www.kawaz.org/blogs/giginet/2012/03/15/266/

こちらを参考に自分でもちょっと作ってみました。こちらで試せます。キーボードの上下で自機の移動、左のCtrlキーで弾を発射します。
自機の動作処理を行なっているプログラムはこんな感じ。

import UnityEngine

class MyCharaController (MonoBehaviour): 
	public bulletPrefab as GameObject
	public bulletSpeed as single = 40.0f
	FiriingMouth as GameObject

	def Start ():
		FiriingMouth = GameObject.Find("FiriingMouth")
	
	def Update ():
		transform.position.y += Input.GetAxisRaw("Vertical") * Time.deltaTime * 3.0f
		if (transform.position.y > 5.0f):
			transform.position.y = 5.0f
		if (transform.position.y < -5.0f):
			transform.position.y = -5.0f
		if Input.GetButtonDown("Fire1"):
			bullet as GameObject = Instantiate(bulletPrefab, 
				FiriingMouth.transform.position, FiriingMouth.transform.rotation)
			velocity as Vector3 = Vector3.right * bulletSpeed
			bullet.rigidbody.velocity = velocity

こちらソースコードを置いておきます。ご自由にご活用下さい。