实例化创建4个抛射物而不是1个

时间:2015-12-04 23:06:14

标签: c# unity3d

我有一个弹丸,我想在按空间时加载和射击。这是我的代码,以及我的其余字符脚本:

public float moveSpeed = .2f;
public float shotspeed = 1f;
int selectedCharacter = 1;
int selectedProjectile = 1;
string characterName;
// Update is called once per frame
void Update () {


    if (Input.GetKey (KeyCode.LeftArrow)) {
        transform.position = transform.position + new Vector3(-moveSpeed, 0f, 0f);
    }
    if (Input.GetKey (KeyCode.RightArrow)) {
        transform.position = transform.position + new Vector3(moveSpeed, 0f, 0f);
    }

    if (Input.GetKeyDown (KeyCode.Space)) {
        GameObject bullet = (GameObject)Resources.Load("Projectile" + selectedProjectile, typeof(GameObject));
        Instantiate (bullet, transform.position, Quaternion.identity);
    }

    if (Input.GetKeyDown (KeyCode.Tab)) {

        if (selectedCharacter < 4) {
            selectedCharacter++;
            selectedProjectile++;
        }
        else {
            selectedCharacter = 1;
            selectedProjectile = 1;
        }

        for (int i = 1; i < 5; i++) {
            if (i != selectedCharacter){
                characterName = "C" + i;
                GameObject.Find (characterName).GetComponent<Renderer>().enabled = false;
            }
            else {
                characterName = "C" + selectedCharacter;
                GameObject.Find(characterName).GetComponent<Renderer>().enabled=true;

            }
        }
    }


}

就是这样,因为我有四种不同的射弹,每次按Tab键时,选定的弹丸都会发生变化。

附着在弹丸上的是弹丸运动剧本。

然而,当我按空格键时,会实例化4个子弹而不是一个。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我将评论移至答案。

如果硬件不是问题,那么我怀疑该脚本附加到多个对象。

你有其他角色吗?您是否在代码中附加脚本?在检查员?

修复可能是添加一个shotDelay。但这只是一种解决方法。

我建议您仔细检查您是否没有将脚本附加到多个对象上。