0
我有一个弹丸,当我按下空间时,我想加载并点燃。这是我为它的代码,以我的性格脚本的其余部分一起:实例化创建4个弹丸而不是1个
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;
}
}
}
}
是这样的,因为我有四个不同的炮弹和selectedProjectile得到改变我每次按标签时间。
附着在弹丸上的是弹丸运动脚本。
但是,当我按空间时,4个子弹被实例化而不是一个。
我在做什么错?
不认为你已经向我们展示了足够的代码。另外,每次有人按下按钮时是否应该加载资源?预载所有的射弹不是更好吗? – mpen
我看到的代码只实例化了一个项目符号。你没有附上那个脚本四次的东西,是吗?你应该在每次实例化一个项目符号后添加一个小的'Debug.Log()',看看你会得到多少个日志。如果日志中只有1个,子弹来自其他地方。 'Input.GetKeyDown()'也应该是正确的,只在该关键帧关闭的一帧中返回'true'。你的硬件没问题,空格键上没有松动的接触,导致'GetKeyDown()'触发四次? –
@mpen我添加了我角色脚本的其余部分。 – quibblify