弾を撃つ/PrefabからのInstance生成・削除

トップへ

参考ページ

とくになし

手順

  1. 弾の画像を用意する
  2. Prefab として登録する
    1. 一度Hierarchyにドラッグドロップしてオブジェクトを作っておく
    2. Assetsフォルダの下にPrefabsという名前のフォルダを作る
    3. あらかじめ作っておいたオブジェクトをPrefabフォルダに移動する
  3. キーを押したときに弾を生成するようにScriptを追加する

コード(主要部分以外省略)

  
// 弾に設定するScript
public class Bullet: MonoBehaviour {

    private GameObject openguin;
    private float speed = 0.025f;


	void Start () {
        // 弾を発射する位置を取得(プレイヤーの位置)
        openguin = GameObject.FindWithTag("Player");
        Rigidbody2D rigidbody2D = GetComponent();

        rigidbody2D.velocity = new Vector2(speed * openguin.transform.localScale.x, rigidbody2D.velocity.y);
        Vector2 temp = transform.localScale;
        temp.x = openguin.transform.localScale.x;
        transform.localScale = temp;
	}

	void Update () {
        Vector2 position = transform.position;
        position.x += speed;

        transform.position = position;
	}
}
  

  public class Openguin : MonoBehaviour {

    public GameObject Bullet;

      // 毎フレーム呼ばれる
      void Update () {
        Shot();
      }

      void Shot()
      {
          // 左のCTRLキーを押したときに発動
          if (Input.GetKeyDown("left ctrl"))
          {
              // インスタンスの生成(弾を発射する)
              GameObject bulletInstance = GameObject.Instantiate(Bullet, transform.position + new Vector3(0.6f, 0f, 0f), transform.rotation);

              // インスタンスを5秒後に消す
              GameObject.Destroy(bulletInstance, 5f);
          }
      }
  }