Skip to content

Instantly share code, notes, and snippets.

@Buravo46
Created January 11, 2014 07:13
Show Gist options
  • Save Buravo46/8368033 to your computer and use it in GitHub Desktop.
Save Buravo46/8368033 to your computer and use it in GitHub Desktop.
【Unity】クリック位置がオブジェクト内ならば、クリックした位置にPrefabを生成するスクリプト。
#pragma strict
// 生成したいPrefab
var Prefab : GameObject;
// クリックした位置座標
private var clickPosition : Vector3;
// スクリーンの座標をワールド座標に変換したクリックした位置座標
private var screenToWorldPointClickPosition : Vector3;
private var collition2d : Collider2D;
private var hitObject : RaycastHit2D;
var tagName : String;
function Start () {
}
function Update () {
// マウス入力で左クリックをした瞬間
if (Input.GetMouseButtonDown(0)) {
// ここでの注意点は座標の引数にVector2を渡すのではなく、Vector3を渡すことである。
// Vector3でマウスがクリックした位置座標を取得する
clickPosition = Input.mousePosition;
// Z軸修正
clickPosition.z = 10f;
// スクリーン座標をワールド座標に変換する
screenToWorldPointClickPosition = Camera.main.ScreenToWorldPoint(clickPosition);
collition2d = Physics2D.OverlapPoint(screenToWorldPointClickPosition);
hitObject = Physics2D.Raycast(screenToWorldPointClickPosition,-Vector2.up);
// HitしたObjectがあるかどうか
if(hitObject){
if(hitObject.collider.gameObject.tag == tagName){
// Prefab生成 : Prefab, Psition, Rotataion
// スクリーンの座標をワールド座標に変換する
Instantiate(Prefab, screenToWorldPointClickPosition, Prefab.transform.rotation);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment