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

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

2012年08月16日

[][]マウスでオブジェクトをドラッグする

HierarchyにSphere(球)を作成して以下のプログラムをに貼り付けるとドラッグが可能になります。

【DragTransform.js】

var mouseOverColor = Color.blue;
private var originalColor : Color;
private var nowMouseDown : boolean = false;
function Start () {
	// オリジナルの色を保存
	originalColor = renderer.sharedMaterial.color;
}
function OnMouseEnter () {
	// マウスカーソルが乗った時に色を変更
	renderer.material.color = mouseOverColor;
}

function OnMouseExit () {
	if (!nowMouseDown) {
		// マウスカーソルが外れた時にオリジナルの色に戻す
		renderer.material.color = originalColor;
	}
}

function OnMouseDown () {
	// 球の位置をメインカメラから見た時のスクリーン空間の座標に変換して取得
	var screenSpace = Camera.main.WorldToScreenPoint(transform.position);
	// 球の中心位置からカーソル位置の差(offset)を取得
	var offset = transform.position - Camera.main.ScreenToWorldPoint(Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z));
	
	// マウスの左ボタンが押されてる間はカーソル位置に球の位置を追随させる
	while (Input.GetMouseButton(0))
	{
		nowMouseDown = true;
		// 現在のマウスカーソルの位置+offsetの位置で更新する。これによりカーソル位置に球が追随する
		var curScreenSpace = Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z);
		var curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset;
		transform.position = curPosition;
		yield;
	}
	nowMouseDown = false;
}

参考にしたサンプル

UNITY: Procedural Examples

http://unity3d.com/support/resources/example-projects/procedural-examples.html

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト

コメントを書くには、なぞなぞ認証に回答する必要があります。

トラックバック - http://d.hatena.ne.jp/nakamura001/20120816/1345135695
リンク元