Пример #1
0
    //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;
                }
            }
        }
    }
Пример #3
0
    /// <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;
                }
            }
        }
    }