0

いろいろな掲示板を見ていると、これはよくある問題なのですが、オンラインで良い答えを見つけることができませんでした。

私のプロジェクトには、矢印キーで動く一人称の車があります。車に搭載された銃が、現在の画面のどこにでも向けることができる十字線を介して撃つことができるようにしたい. 今のところ、画面をクリックしても何も起こらないとき (約 50%) を除いて、弾丸は常に真ん中を通り抜けます。これは、Web上のさまざまなスクリプトを介して取得したコードです。

var speed = 20;
var bullet: GameObject;

function Update () {

var hit : RaycastHit;

if(Input.GetButtonDown("Fire1")){
    var ray = Camera.main.ScreenPointToRay (Input.mousePosition); //ray from
    // through the mousePosition.



    if(Physics.Raycast(ray, hit, 1000)) { //does the ray collide with 
    // anything.

        //add stuff here for finding type of object and such.
        Debug.Log("Hit Something at mouse position");
        Debug.DrawRay (ray.origin, ray.direction * 10, Color.yellow);
        //Display the ray.
        var projectile:GameObject = Instantiate(bullet,transform.position,transform.rotation);

        projectile.rigidbody.velocity = transform.forward * speed;
    }
}

}

誰かが助けることができれば、それは非常に高く評価されます.

4

2 に答える 2

0

実際にコードを投稿することなく、おそらくあなたが調べるべきことは、あなたの試みを理解していれば、発射体が光線の回転ではなく変換の回転から回転を設定している理由であると言えます。

発射物は明らかにビークルからそのすべてのプロパティ (元から切り離されているはずのものを含む) を取得し、それに応じて追従しています。

発射体の回転を光線の回転に設定してみてください。

また、テストする距離が長いため、レイはおそらく半分の時間しかヒットしません。その数を増やすか、より短い距離で衝突するための壁を作成してみてください。

于 2012-06-20T17:55:49.077 に答える