Unity 動作 8 ぶつかったら 取れる すすみ

1✨ きょうの ゴール

プレイヤーが コインに さわったら、コインが 消える(取れた!)ようにするよ。「コインあつめワールド」の かなめの しくみ!

🌉 Scratchの「◯に触れた」= Unityの void OnTriggerEnter2D(Collider2D other)。さわられた しゅんかんに よばれる 特別な 関数だよ。
🧱 Scratch
<[コイン v] に触れた>
=↓ おなじ いみ
💻 C#
void OnTriggerEnter2D(Collider2D other)
{

}

おなじ いみの ことを、C#は 文字で 書くんだね

👆 ←→キー または したの ◀▶ボタンで プレイヤーを うごかして、コインに さわってみよう

2🆕 プレイヤーと コインを よういしよう

おなじ プロジェクトに あたらしい シーンを ついかして、なまえを これに してね:

9-atari

🧩 よういする 3つの もの

1
🔧 Inspector(プレイヤー)
Rigidbody 2D
Box Collider 2D
Mover (Script)
プレイヤーSquare=Rigidbody 2D+Box Collider 2D+Mover(⑥⑧の ふくしゅう)
→
2
🔧 Inspector(コイン)
Circle(黄色)
Coin (Script)
コイン=Circle+Coin(⑦の 作りかた)
→
3
🔧 Inspector(コイン)Collider
Circle Collider 2D
☑ Is Trigger
コインに Circle Collider 2Dを つけて Is Trigger に チェック→ すりぬけセンサーに なる
↑ チェックを いれると すすめるよ

3🔁 まえの ふりかえり

🧠 まえの じかんは Rigidbody 2D(重力を つける 部品)と AddForce(力を 加える)を ならったね。おぼえて いるかな?
GameObjectに Rigidbody 2Dを つけると、どう なる?
✅ 重力で 落ちるように なる。Unityが 自動で 計算して くれたね。
AddForce(new Vector2(0, power), ForceMode2D.Impulse); は 何を する?
✅ 力を 加える。おし上げる 力で ジャンプさせたね。
↑ 2もん こたえると すすめるよ

4✨ OnTriggerEnter2Dで コインを 消す

🎯 「さわられた しゅんかんに 1回だけ よばれる」特別な 関数を、コインの スクリプトに 書くよ。

🧩 3つめの 特別な 関数

Start()
はじめに 1回だけ
Update()
まいフレーム ずっと
OnTriggerEnter2D()
さわられた しゅんかんに 1回

🧩 つかう あたらしい 部品:void OnTriggerEnter2D(Collider2D other) { Destroy(gameObject); }

(2Dが つくだけで、考えかたは おなじだよ)

「さわられた しゅんかんに 1回 よばれる 特別な関数」だよ。Destroy(gameObject);=じぶんを 消す めいれい。

🔮 よそうしてみよう:この コードを コインの Coinスクリプトに 書いて、プレイヤーが コインに さわると どう なる?

void OnTriggerEnter2D(Collider2D other)
{
    Destroy(gameObject);
}
✅ せいかいは B コインが 消える。この スクリプトは コインに ついてるから、gameObject=「じぶん」=コインなんだ。

🧩 つかう 部品(ヒント・くみあわせて 書いてね):

void OnTriggerEnter2D(Collider2D other)
Destroy(gameObject);
✋ やってみよう:コインの Coinスクリプトに 書いて ▶。プレイヤーを コインに 近づけて、コインが キラッと 消えたら せいこう!
いっきに 書かずに、1ぎょう 書いたら ▶で 動かして 見るを くりかえそう。

こたえ:かんせいコードは これ。

using UnityEngine;

public class Coin : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D other)
    {
        Destroy(gameObject);
    }
}

プレイヤーが コインに さわると OnTriggerEnter2Dが 1回 よばれて、Destroy(gameObject);で コイン じしんが 消える。これで「コインを 取る」しくみの できあがり!

🤔 かんがえてみよう:なんで コインの方が 消えるのかな?
ヒント:Destroy(gameObject);の スクリプトは コインに ついてる。gameObjectは「このスクリプトが ついてる じぶん」を さすよ。
⚠ わざと ためそう:コインの Colliderの Is Triggerの チェックを 外したら どう なる?→ すりぬけずに ぶつかって 止まってしまう。「さわった ことだけ 知らせる センサー」に するには Is Triggerが 必要なんだ。
↑ チェックを いれると すすめるよ

5📝 コーディング 小テスト

きょうと まえの ことを あわせて といてみよう。ぜんもん せいかいで「かんせい」に すすめるよ。

OnTriggerEnter2Dは いつ よばれる?
✅ さわられた しゅんかん。Start()(はじめ)・Update()(ずっと)に つづく 3つめの 特別な 関数だね。
Destroy(gameObject); は 何を する?
✅ じぶんを 消す。gameObject=「このスクリプトが ついてる じぶん」。
Colliderの Is Triggerに チェックを 入れる いみは?
✅ すりぬけセンサー。ぶつかって 止まらず、「さわった」だけ 知らせて くれるよ。
↑ 小テストに ぜんもん せいかいすると すすめるよ

6🎉 かんせい!

コインに さわったら 消える しくみが 作れたね。「コインあつめワールド」の かなめが できたよ!Unity 動作8 クリア ✓

👩‍🏫 先生と いっしょに かくにんしよう!

  • プレイヤーSquare(Rigidbody 2D+Mover)と コイン(Is Trigger付き)を よういできた?
  • OnTriggerEnter2Dが「さわられた しゅんかんに 1回」よばれることを せつめいできた?
  • Destroy(gameObject);が「じぶんを 消す」ことを、目で たしかめた?
  • なぜ コインの方が 消えるのか(スクリプトが コインに ついてるから)を じぶんの ことばで 言えた?

🚪 もっと やりたい人へ:Destroy(gameObject);を Destroy(other.gameObject);に かえたら どう なるかな?ためして みよう!

↑ さいごまで すすむと おせるよ