C#
transform
Unity
Position

進行方向に弾を発射する

More than 1 year has passed since last update.

キャラクターオブジェクトの子に付けたempty objectから弾を発射するも、発射位置が子に追従せずに最初に設定した位置から生成されてしまうので調べてみた。

LocalPosition&worldPosition1.gif
こんな感じ。

ソースは以下。

void Update () {

    if (Input.GetKeyDown("space"))
    {
        GameObject runcherBullet = GameObject.Instantiate(bullet) as GameObject; //runcherbulletにbulletのインスタンスを格納
        runcherBullet.GetComponent<Rigidbody>().velocity = transform.forward * bulletSpeed; //アタッチしているオブジェクトの前方にbullet speedの速さで発射

    }
}

上記のempty object(runcherbullet)の座標を調べてみるとLocal座標で見るとキャラの位置が変わっても座標が固定になっているので、ワールド座標にするために下記のように修正。

void Update () {

    if (Input.GetKeyDown("space"))
    {
        GameObject runcherBullet = GameObject.Instantiate(bullet) as GameObject; //runcherbulletにbulletのインスタンスを格納
        runcherBullet.GetComponent<Rigidbody>().velocity = transform.forward * bulletSpeed; //アタッチしているオブジェクトの前方にbullet speedの速さで発射
        runcherBullet.transform.position = transform.position;
    }
}

LocalPosition&worldPosition2.gif
うまくいきました!