Unity创建了一个对象的两个克隆,尽管实例化只被调用一次

时间:2014-03-27 19:31:14

标签: c# unity3d

我在Unity中正在研究一些敌人AI,但是当我尝试实例化单个射弹时,它会在完全相同的位置创建两个。即使实例化被调用一次,也会发生这种情况。

实例化代码:

void Shoot(Vector3 direction){

    GameObject EnemyLaser = (GameObject)Instantiate(Resources.Load("EnemyLaser"), FirePosition.transform.position, FirePosition.transform.rotation);
    EnemyLaser.renderer.material.color = gameObject.renderer.material.color;
    EnemyLaser.rigidbody.velocity = direction * laserPower;
}

发射代码:

void FireRaycast(){

    Vector3 direction = transform.TransformDirection(Vector3.forward);
    RaycastHit hit;

    Debug.DrawRay(transform.position, direction * range);

    if(Physics.Raycast(transform.position, direction, out hit, range)){

        if(hit.collider.tag == "Player"){

            if(currentTime > fireInterval){
                Shoot(direction);
                currentTime = 0;
            }
        }
    }

    currentTime += Time.deltaTime;

}

这导致了多个问题,例如两个射弹由于碰撞等而不能移动......

我尝试使用布尔值来检查该函数只被调用一次,但它仍会创建两个对象。

1 个答案:

答案 0 :(得分:0)

我不知道你的问题是否已经解决,但这种情况发生在我身上的原因不同于已经提到过的原因。

就我而言,我使用mouse click event在环境中生成对象。我使用的是Input.GetMouseButtonDown(0),出于某种原因,每次点击都会返回true两次,从而创建了我的预制件的两个实例。

我的解决方案是对时间约束设置实例化新对象的频率。之后,每次单击鼠标只创建一个实例。