-UnityでRPGを作りたい...!!
そんな管理人の備忘録
画面上のキャラクターをクリックして、イベントを呼び出す
Unityで特定のスプライトだけクリックするためのソースコードを掲載!
【学習する内容】
1.クリックした位置を取得する関数
2.クリックした位置がコライダー上か判定する関数
3.オブジェクトを格納する変数
左のブロントさんのスプライトにはCollider 2Dを保持している。クリックの判定にはこのCollider 2Dが必要!右のブロントさんには保持していないため、クリックしてもConsoleには何も表示されない。
タッチイベントを判定するオブジェクトTouchManagerに、スクリプトTouch.csをコンポーネントに追加する。
タッチしたいスプライトにCollider 2Dを加える。
これで実行すれば、Consoleにオブジェクト名が表示されるようになる!あとは自由に動作を実装していこう!
以下サンプルコード
Touch.cs
void Update () {
if (Input.GetMouseButtonDown(0)) {
Vector3 aTapPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Collider2D aCollider2d = Physics2D.OverlapPoint(aTapPoint);
if (aCollider2d) {
GameObject obj = aCollider2d.transform.gameObject;
Debug.Log(obj.name);
}
}
}
【おまけ】
TouchManagerオブジェクトを作成せず、各スプライトにスクリプトを格納して、クリックした際に色を変化させるコード
private bool isClick = false;
// Update is called once per frame
void Update () {
if(Input.GetMouseButtonDown(0)){
OnMouseDown();
if(isClick){
isClick = false;
}else{
isClick = true;
}
}
if (Input.GetMouseButton(0)) {
}
if (Input.GetMouseButtonUp(0)) {
}
}
void OnMouseDown(){
Vector3 aTapPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Collider2D aCollider2d = Physics2D.OverlapPoint(aTapPoint);
if (aCollider2d) {
GameObject obj = aCollider2d.transform.gameObject;
if (obj.name == this.name) {
if(isClick){
this.renderer.material.color = Color.white;
}else{
this.renderer.material.color = Color.blue;
}
}
}
}
選択したブロントさんが青色に変化する!もう一度クリックすると戻る。
-----------------------------------------------------
個人ブログもよろしく!
動物園てくの
喫茶店てくの
漫画喫茶てくの