5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

進行方向に弾を発射する

Posted at

キャラクターオブジェクトの子に付けた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
うまくいきました!

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?