*

[Unity]Unity 2Dチュートリアル スプライトをクリック(タップ)して削除する

公開日: : 最終更新日:2014/11/26 C#, Unity

前回、スプライトを置くことが出来たのですが、動かせるようにしたいところです。

ドラッグして動かす、のが最終目標ですが、その前にいくつかの段階を踏んで理解していきたいと思います。

というわけで今回は前回置いたスプライトを選択するところを作りましょう。 タイルを選択出来ないと、動かすことなんて出来ないですからね。

最初はスプライトをクリックするところです。 わかりやすくするためにクリックされたスプライトを削除してみましょう。

まずはHierarchyのtileを全部選択してから、InspectorのAdd ComponentからPhisics 2D→Box Collider 2Dを選択して、Box Colliderをスプライトに追加します。

そしてTile.csのUpdate.csの部分を以下のように修正します。

void Update () {
	if (Input.GetMouseButtonDown (0)) {
		Vector2 tapPoint = Camera.main.ScreenToWorldPoint (Input.mousePosition);
		Collider2D collider = Physics2D.OverlapPoint (tapPoint);
		if (collider != null) {
			GameObject obj = collider.transform.gameObject;
			Destroy (obj);
		}
	}
}

それでは実行してみましょう。 Unity_

解説していきます。

	if (Input.GetMouseButtonDown (0)) {

◆Input.GetMouseButtonDown(int) マウスのボタンダウンを検知することが出来ます。 引数に0を与えると左クリック1を与えると右クリック2を与えるとホイールクリックになります。 今回のこれは「左クリックされたら」という意味。

Vector2 tapPoint = Camera.main.ScreenToWorldPoint (Input.mousePosition);

◆Vector2 ベクトルです。2という名前のとおり、2Dのベクトルです。 Vectorは方向や座標を扱います。2Dの世界ではx軸とy軸だけがあるとイメージしてください。

◆Camera.main.ScreenToWorldPoint カメラから考えた座標を表します。 引数にInput.mousePositionを与えることで、マウスの座標を得ています。

Collider2D collider = Physics2D.OverlapPoint(tapPoint);

◆Collider2D 先ほどスプライトに設定したCollider2Dという衝突関係のクラスです。 タッチされたスプライトを放り込む変数になっています。

◆Physics2D.OverlapPoint(tapPoint) タッチされた場所の座標を渡して、そこに重なっているものを取得しています。 基本的には一番前に表示されているものを得ることが出来ます。

if (collider != null) {

◆collider != null 何もないところをクリック(タップ)したときは変数にnull値が入ってくるので、その場合はなにもしないように回避。

GameObject obj = collider.transform.gameObject;

◆collider.transform.gameObject colliderのgameObjectとしての値を取得しています。()がないのでプロパティだとわかります。

obj.Destroy();

◆Destroy ですとろーい。オブジェクトを破棄しています。二度と復活できません。 ゲームを実行しながらスプライトを消すとHierarchyから消えていくのが実際に見えます。

そんなわけでとりあえずスプライトを選択して、削除する、というところまででした。

次回更新しました→[Unity]Unity 2Dチュートリアル スプライトをクリック(タップ)して移動する

↓どうしても待ちきれない人へお勧めの書籍↓

読んでみたけど、なかなか手軽な内容です。初心者に丁度よい情報量だと思います。初心者を抜け出した頃だと少し物足りないかも? Scriptについても超基本までは解説してあるのでこれを覚えてアルゴリズムを考えて覚えていきました。

ad

関連記事

Wannabenote

[Unity]Unity4.6 UIチュートリアル Lesson10.UI Scrollbar 日本語要約

Unity関連まとめページはこちら。 前回のScroll Rectの続き。 UI Scr

記事を読む

Excel Csharp

[C#]DataGridViewにプロパティを利用しながら配列をバインドする。

DataGridView C#のFormにデータを表示するのに便利なコントロールがあります。 デ

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 画面上のGameObjectを左下から取得する

前回、画面上のオブジェクトを一括で手に入れる方法はわかりました。 しかし、これではどのオブジェクト

記事を読む

Unity2_1

[Unity]Unity2Dチュートリアル スプライトを利用する

前回の続き。 早速、スプライトを設置して作っていきましょう。 ※スプライトとは スプライ

記事を読む

NuGet visual studio

[C#]C#でPDFファイルを画像(System.Drawing.Image)にする

PDFを画像に PDFファイルを読み込んで、画像にする必要があったんです。 インターネットで調べ

記事を読む

VisualStudio_

[C#,Excel]visual studio tools for office(VSTO)を利用してExcelのAddInをC#で作る

いい加減VBAが嫌になってきたので、調べたらC#でExcelのアドインが作れるんですね。 というわ

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 直線で3つ同色のパズルを消去する ソース解説

◆全文 using UnityEngine; using System.Collection

記事を読む

Unity_

[Unity]Unity 2Dチュートリアル スプライトを元の位置に戻す

前回ドラッグして移動するところまでは作成したのですが、パズドラって、タップしてもその場から動かさなか

記事を読む

wannabenote

[C#]ポートを使用しているプロセスを特定してAcivateするやつ

ポートからプロセスを特定してAcivateするやつ作りました。 https://github.

記事を読む

Delgate Multi Thread

[C#]マルチスレッドとイベントハンドラでデータベースのテーブルの値の変更を検知する。

システム利用中にデータベースの内容が更新 こういったシステムは往々にしてあるかと思います。 特に

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑