所以我想给我的2d自上而下的太空射手换武器。所谓武器,我只是指我的子弹预制件,所以它发射另一颗子弹,然后我可以增加伤害等。
这是我的密码。当我按2号键时,它会在层次结构中拍摄我的预置克隆,但是它的颜色变灰了,在游戏视图中什么也没有显示出来。下面是我的playerShoot代码。
public class playerShoot : MonoBehaviour {
public Vector3 bulletOffset = new Vector3 (0, 0.5f, 0);
float cooldownTimer = 0;
public float fireDelay = 0.25f;
public GameObject bulletPrefab;
int bulletLayer;
public int currentWeapon;
public Transform[] weapons;
void Start () {
}
void Update () {
if (Input.GetKeyDown(KeyCode.Alpha1)){
ChangeWeapon(0);
}
if (Input.GetKeyDown(KeyCode.Alpha2)){
ChangeWeapon(1);
}
cooldownTimer -= Time.deltaTime;
if (Input.GetButton("Fire1") && cooldownTimer <= 0){
cooldownTimer = fireDelay;
Vector3 offset = transform.rotation * bulletOffset;
GameObject bulletGO = (GameObject)Instantiate(bulletPrefab, transform.position + offset, transform.rotation);
bulletGO.layer =gameObject.layer;
}
}
public void ChangeWeapon(int num){
currentWeapon = num;
for (int i = 0; i < weapons.Length; i++){
if (i ==num)
weapons[i].gameObject.SetActive(true);
else
weapons[i].gameObject.SetActive(false);
}
}}
发布于 2015-01-15 08:07:52
保持其余代码不变,只需更改以下行
GameObject bulletGO = (GameObject)Instantiate(bulletPrefab, transform.position + offset, transform.rotation);至
GameObject bulletGO = (GameObject)Instantiate(weapons[currentWeapon].gameObject, transform.position + offset, transform.rotation);所做的更改是对武器数组中的武器使用转换,而不是使用bulletPrefab。
出现此问题是因为您正在实例化单个预制件,这与用于武器数组中的第一个元素的转换相同。因此,当您调用ChangeWeapon(1),时,预置程序将被停用。这在被实例化的非活动GameObjects中出现。
我建议你做的是有两个独立的预制板,并相应地产卵。
https://stackoverflow.com/questions/27957920
复制相似问题