弾が出現したら、前方に直線上に進むようにする。
Bullet スクリプトを作って Bullet にアタッチ。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Bullet : MonoBehaviour { private float speed = 500; void Start() { GetComponent<Rigidbody>().AddForce(transform.up * speed); } }
弾らしく動かすために、transform.forward ではなくて、transform.up にした。
Quaternion.Euler(0, 0, 90) で出現させているので、世界では横に飛んでいく。

このままだと飛び続けて消えないので、3 秒経ったら消えるようにしたい。
private float restTime = 3; void Update() { restTime -= Time.deltaTime; if (restTime < 0) { Destroy(this.gameObject); } }
弾が消えるのは弾の機能だから、RPC が絡んでこない。それぞれのクライアントで自動的に消える。
弾が何かと接触したら、それも消えるようにしたい。
OnCollisionEnter のコールバックで設定する。
void OnCollisionEnter(Collision other) { Destroy(this.gameObject); }
何回かスペースキーを連打して PlayerCube に当たると、その時点で消えるようになった。
しかし、オブジェクトの生成と消滅はコストが比較的高くて、こういうやつだとよくオブジェクトプールの手法が使われるらしいので次はそれをやってみる。