我有一个弹丸,我想在按空间时加载和射击。这是我的代码,以及我的其余字符脚本:
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个子弹而不是一个。
我做错了什么?
答案 0 :(得分:0)
我将评论移至答案。
如果硬件不是问题,那么我怀疑该脚本附加到多个对象。
你有其他角色吗?您是否在代码中附加脚本?在检查员?
修复可能是添加一个shotDelay。但这只是一种解决方法。
我建议您仔细检查您是否没有将脚本附加到多个对象上。