強火で進め このページをアンテナに追加 RSSフィード

整理された情報は こちら へどうぞ。

2011年06月24日

[][]マウスカーソルでオブジェクトを選択

f:id:nakamura001:20110625015554p:image:w500

今回のサンプルではマウスカーソルの位置に存在するオブジェクトをチェックし、オブジェクトが存在する場合はそのオブジェクトをちょっと大きくするサンプルとなります。

マウスカーソルでオブジェクトを選択には以下の様に Physics.Raycast() を使って行います。

【SelectedWithMouseScript.js】

static var selectedGameObject : GameObject;

function Update () {
  var ray : Ray;
  var hit : RaycastHit;
  ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  if (Physics.Raycast(ray, hit, 100)) {
    selectedGameObject = hit.collider.gameObject;
  } else {
    selectedGameObject = null;
  }
}

Camera.main.ScreenPointToRay() でマウスカーソルの位置からカメラに表示された画面の奥方向へのRayを取得します。

Physics.Raycast(ray, hit, 100) では取得したRayの値(=ray)、Rayと衝突したオブジェクトの情報(=hit)、Rayの距離(=100)を指定しています。

Rayとは指定の向きへレーザー光線を放つ様なイメージです。今回 Physics.Raycast() で指定した距離(=100)はそのレイザー光線がどこまで届くかを指定しています。

Cubeに追加してあるスクリプト CubeScript.js では選択された GameObject が自分自身の場合はスケールを1.2に変更しています。これにより選択された(Rayと衝突した)オブジェクトはちょっと大きく表示されます。

【CubeScript.js】

function Update () {
	if (this.gameObject == SelectedWithMouseScript.selectedGameObject) {
		transform.localScale = Vector3(1.2, 1.2, 1.2);
	} else {
		transform.localScale = Vector3(1, 1, 1);
	}
}

今回のサンプルはこちらで試せます。

ソースファイルはこちら

[][]cocos2d向けのツール一覧

このまとめは素晴らしい。参考に成りました。

The Complete (?) List Of Cocos2D Tools | Learn & Master Cocos2D Game Development

http://www.learn-cocos2d.com/2011/06/complete-list-cocos2d-tools/

[][]スプライト配置ツール「Cocoshop」

f:id:nakamura001:20110625002057p:image

andrew0/cocoshop - GitHub

https://github.com/andrew0/cocoshop/

ソースコードで配布されているので cocoshop.xcodeproj というプロジェクトファイルを開き、ビルドターゲットを cocos2d 、 cocoshop の順番で切り替えてそれぞれビルドして下さい。

この様に「位置、アンカーポイント、スケール、Flip、透明度、色、相対指定、回転量」が指定可能です。

f:id:nakamura001:20110625002058p:image

レイアウトした後はcocos2dで簡単に使える様に成っています。

レイアウトファイルは .csd のファイルで、この様に読み込む様です。同梱されている CSExample1.xcodeproj がサンプルです。

	CSDReader *csd = [CSDReader readerWithFile:@"example1.csd"];
	CCNode *aNode = [csd newNode];
	[self addChild: aNode];

f:id:nakamura001:20110625002059p:image

レイアウトファイルはXMLで記述されて居るのでパース処理を書けばcocos2d以外の環境でも問題無く使えそうです。

レイアウトファイルの内容はこんな感じです。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>background</key>
	<dict>
		<key>anchorX</key>
		<real>0.0</real>
		<key>anchorY</key>
		<real>0.0</real>
		<key>colorB</key>
		<real>28</real>
		<key>colorG</key>
		<real>41</real>
		<key>colorR</key>
		<real>122</real>
		<key>opacity</key>
		<real>185</real>
		<key>posX</key>
		<real>0.0</real>
		<key>posY</key>
		<real>0.0</real>
		<key>posZ</key>
		<integer>-2147483648</integer>
		<key>relativeAnchor</key>
		<false/>
(以下略)