//spawn a projectile public void SpawnProjectile(string name) { PlayerCombat playerCombat = transform.parent.GetComponent <PlayerCombat>(); if (playerCombat) { //find a custom spawn position, if there is any. Otherwise use the weapon hand as spawn position Vector3 spawnPos = playerCombat.weaponBone.transform.position; ProjectileSpawnPos customSpawnPos = playerCombat.weaponBone.GetComponentInChildren <ProjectileSpawnPos>(); if (customSpawnPos) { spawnPos = customSpawnPos.transform.position; } //spawn projectile at spawn position GameObject projectilePrefab = GameObject.Instantiate(Resources.Load(name), spawnPos, Quaternion.identity) as GameObject; if (!projectilePrefab) { return; } //set projectile to current direction Projectile projectileComponent = projectilePrefab.GetComponent <Projectile>(); if (projectileComponent) { projectileComponent.direction = playerCombat.currentDirection; Weapon currentWeapon = playerCombat.GetCurrentWeapon(); if (currentWeapon != null) { projectileComponent.SetDamage(playerCombat.GetCurrentWeapon().damageObject); } } } }
//spawn a projectile public void SpawnProjectile(string name) { GameObject projectile = GameObject.Instantiate(Resources.Load(name)) as GameObject; PlayerCombat_P2 playerCombat = transform.parent.GetComponent <PlayerCombat_P2>(); if (playerCombat) { //set projectile direction to player direction Projectile p = projectile.GetComponent <Projectile>(); if (p) { p.directionP2 = playerCombat.currentDirection; Weapon currentWeapon = playerCombat.GetCurrentWeapon(); if (currentWeapon != null) { p.SetDamage(playerCombat.GetCurrentWeapon().damageObject); } } //check if there is a spawn position for this weapon ProjectileSpawnPos spawnPos = playerCombat.weaponBone.GetComponentInChildren <ProjectileSpawnPos>(); if (spawnPos) { //spawn at projectile spawn position projectile.transform.position = spawnPos.transform.position; } else { //spawn at the weapon hand position if (playerCombat.weaponBone) { projectile.transform.position = playerCombat.weaponBone.transform.position; } } } }
/// <summary> /// 产生子弹 /// </summary> /// <param name="name"></param> public void SpawnProjectile(string name) { GameObject projectile = GameObject.Instantiate(Resources.Load(name)) as GameObject; PlayerCombat playerCombat = transform.parent.GetComponent <PlayerCombat>(); if (playerCombat) { //将子弹方向设置为玩家方向 Projectile p = projectile.GetComponent <Projectile>(); if (p) { p.direction = playerCombat.currentDirection; Weapon currentWeapon = playerCombat.GetCurrentWeapon(); if (currentWeapon != null) { p.SetDamage(playerCombat.GetCurrentWeapon().damageObject); } } //检查此武器是否有生成位置 ProjectileSpawnPos spawnPos = playerCombat.weaponBone.GetComponentInChildren <ProjectileSpawnPos>(); if (spawnPos) { //枪在指定位置生成 projectile.transform.position = spawnPos.transform.position; } else { //把枪放在手的位置 if (playerCombat.weaponBone) { projectile.transform.position = playerCombat.weaponBone.transform.position; } } } }