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

本文关键字:1个 创建 4个 投射物 实例化 | 更新日期: 2023-09-27 18:25:40

我有一枚炮弹,我想在按下空格时装载并发射。这是我的代码,以及我的角色脚本的其余部分:

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个项目符号,而不是一个。

我做错了什么?

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

我把注释移到了一个答案上

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

你还有其他角色吗?你是用代码附加脚本吗?在检查员?

一个解决方案可以是添加一个shotDelay。但这只是一个变通办法。

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