*

[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

[Unity]コードリファレンス ゲーム時間を表示する。

ゲーム内の時間を表示します。 Timeクラス 時間のためのクラスです。 ゲームが起動してか

記事を読む

Unity_

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

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

記事を読む

logo

[C#]パスワード暗号化プログラムの初歩

パスワード暗号化の初歩的方法。 子供だましみたいなプログラムですね。 これは入社四か月の頃にプロ

記事を読む

wannabenote

[Excel, C#]C#でExcelの値の変更イベントを取得する。

Excelのイベント取得 処理の流れ 対象のワークシートを取得する。 イベントハンドラ

記事を読む

wannabenote

[C#]マルバツゲームを作ろう

Twitterでお題を出してください、というツイートに脊椎反射でマルバツゲームとか言ってしまったんで

記事を読む

unity ご祝儀

[Unity?]割り切れない関係のためのご祝儀計算シミュレータ

今日、親友が結婚します。 なので、ご祝儀を用意するんですが、相場は3万円ですね。 じゃあ、な

記事を読む

Unity_

[Unity]Unity 2Dチュートリアル スプライトをドラッグ(タップ)して移動する

前回はスプライトの簡単な操作を覚えました。 今回はスプライトを移動させてみましょう。 ドラッグして

記事を読む

logo

[C#]AS400に対してODBC接続でトランザクションによりSQLを実行する。

データベースに対するトランザクション処理 と銘打ちましたが、要するに安全にinsert文などを実行

記事を読む

Unity_

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

前回の続き。UI Imageの説明。 公式はこちら。 Image(Script)の説明です。

記事を読む

logo

[C#]BlankClear テキストファイルから空白を削除ツール

10分ぐらいで作ったツールって本当にすぐどこかに行ってしまいますよね。 あんなツール作ったけど、え

記事を読む

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 ↑