uGuiのボタンにスクリプトを入れて適応させる。
まずは例を
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class button : MonoBehaviour {
public int uu;
public bool abo = false;
void Start () {
Button button = this.GetComponent <Button> ();
button.onClick.AddListener (() => {
Debug.Log ("bo!");
uu--;
abo = true;
});
}
void Update () {
}
}
まず
using UnityEngine.UI;
これないと
Button button = this.GetComponent <Button> ();
の Button が反応しません。
例のスプを入れると
ボタンを押したとき
Debug.Log ("bo!");
bo!と文字が出て
uu--; で
uuがー1される
2015年2月6日金曜日
2015年2月3日火曜日
2Dオブジェクトは通常のRayでは反応しない
タイトルどうりで、どうやら2Dオブジェクトは通常のRaycastでは反応しないらしい
例として
まず通常の3DオブジェクトのRay
if (Input.GetMouseButtonDown(0)){
if (sx.gameObject.GetComponent<UserPlayer>().ss != null){
Vector3 pos = Input.mousePosition;
pos.z = 3.0f;
Ray ray = Camera.main.ScreenPointToRay(pos);
if(Physics.Raycast(ray, out hit, 100)){
}}}
こちらが2DオブジェクトのRay
Vector2 pos = new Vector2(x, y);
RaycastHit2D hitObject = Physics2D.Raycast(pos, -Vector2.up);
まぁこうなってると思う
だいぶ2DオブジェクトのRayの方は簡易に書いてます。
このまま使っても意味ないです。
ここで
3Dの空間に2DオブジェクトにRyaでオブジェクトを取得はどうやるんだろうかと
いろいろ調べた結果をここにメモとして残そう!
Vector3 Vector3D = Camera.main.ScreenToWorldPoint( new Vector3(Input.mousePosition.x, Input.mousePosition.y, z));
Vector2 pos = new Vector2(Vector3D.x, Vector3D.y);
Collider2D colition2d = Physics2D.OverlapPoint(pos);
if(colition2d) {
RaycastHit2D 2dObject = Physics2D.Raycast(tapPoint, -Vector2.up);
これで2DオブのRayは完成
とその前に
ついつい忘れてしまうのがオブジェクトにコライダーをつけることです
つけなければRayは反応しませんよ!
例として
まず通常の3DオブジェクトのRay
if (Input.GetMouseButtonDown(0)){
if (sx.gameObject.GetComponent<UserPlayer>().ss != null){
Vector3 pos = Input.mousePosition;
pos.z = 3.0f;
Ray ray = Camera.main.ScreenPointToRay(pos);
if(Physics.Raycast(ray, out hit, 100)){
}}}
こちらが2DオブジェクトのRay
Vector2 pos = new Vector2(x, y);
RaycastHit2D hitObject = Physics2D.Raycast(pos, -Vector2.up);
まぁこうなってると思う
だいぶ2DオブジェクトのRayの方は簡易に書いてます。
このまま使っても意味ないです。
ここで
3Dの空間に2DオブジェクトにRyaでオブジェクトを取得はどうやるんだろうかと
いろいろ調べた結果をここにメモとして残そう!
Vector3 Vector3D = Camera.main.ScreenToWorldPoint( new Vector3(Input.mousePosition.x, Input.mousePosition.y, z));
Vector2 pos = new Vector2(Vector3D.x, Vector3D.y);
Collider2D colition2d = Physics2D.OverlapPoint(pos);
if(colition2d) {
RaycastHit2D 2dObject = Physics2D.Raycast(tapPoint, -Vector2.up);
これで2DオブのRayは完成
とその前に
ついつい忘れてしまうのがオブジェクトにコライダーをつけることです
つけなければRayは反応しませんよ!
登録:
投稿 (Atom)