コード例 #1
0
        void ThrowGrenade()
        {
            if (null != grenade && null != skillCmpt)
            {
                int itemCost = grenade.itemCost ? 1 : 0;
                if (GameConfig.IsMultiMode)
                {
                    PlayerNetwork.mainPlayer.RequestThrow(motionMgr.Entity.Id, grenade.m_ItemObj.instanceId, itemCost);
                }
                else
                {
                    grenade.m_ItemObj.stackCount -= itemCost;
                }

                SkillSystem.ShootTargetPara target = new SkillSystem.ShootTargetPara();
                if (null != ikCmpt)
                {
                    target.m_TargetPos = ikCmpt.aimTargetPos;
                }
                else
                {
                    target.m_TargetPos = motionMgr.Entity.position + motionMgr.Entity.forward;
                }

                skillCmpt.StartSkill(targetEntity, grenade.m_SkillID, target);

                if (null != grenade.m_Model)
                {
                    grenade.m_Model.SetActive(false);
                }
            }
        }
コード例 #2
0
        void OnFire(float magazineCost, int skillIndex = 0)
        {
            if (null != gun && null != gun.m_AimAttr && null != gun.m_AimAttr.m_AimTrans && null != gun.ItemObj && null != entity &&
                null != skillCmpt && null != gun.m_AttackMode)
            {
                skillCmpt.StartSkill(skillCmpt, gun.m_ShootSoundID);
//				AudioManager.instance.Create(gun.m_AimAttr.m_AimTrans.position,
//				                              gun.m_ShootSoundID,
//				                              gun.m_AimAttr.m_AimTrans);
                SkillSystem.ShootTargetPara target = new SkillSystem.ShootTargetPara();
                if (null != ikAim)
                {
                    target.m_TargetPos = ikAim.targetPos;
                }
                else
                {
                    target.m_TargetPos = entity.position + entity.forward;
                }

                skillCmpt.StartSkill(targetEntity, gun.GetSkillID(skillIndex), target);

                if (PeGameMgr.IsSingle)
                {
                    if (!(m_IgnoreItem && gun.m_AmmoType == AmmoType.Energy))
                    {
                        gun.magazineValue -= magazineCost;
                    }
                }
                else
                {
                    if (!m_IgnoreItem && null != PlayerNetwork.mainPlayer)
                    {
                        PlayerNetwork.mainPlayer.RequestAttrChanged(entity.Id, gun.ItemObj.instanceId, magazineCost, gun.curItemID);
                    }
                }

                m_LastShootTime = Time.time;
                if (m_EndAfterShoot && null != motionMgr)
                {
                    motionMgr.EndAction(ActionType);
                }

                entity.SendMsg(EMsg.Battle_EquipAttack, gun.ItemObj);

                if (!PeGameMgr.IsMulti)
                {
                    if (gun.m_AttackMode.Length > 0)
                    {
                        entity.SendMsg(EMsg.Battle_OnAttack, gun.m_AttackMode[0], gun.transform, gun.curItemID);
                    }
                }
            }
        }
コード例 #3
0
ファイル: Action_Bow.cs プロジェクト: shrubba/planetexplorers
        public override void DoAction(PEActionParam para = null)
        {
            if (null == skillCmpt || null == bow)
            {
                return;
            }

            SkillSystem.ShootTargetPara target = new SkillSystem.ShootTargetPara();
            if (null != ikAim)
            {
                target.m_TargetPos = ikAim.targetPos;
            }
            else
            {
                target.m_TargetPos = motionMgr.transform.forward;
            }

            if (null != skillCmpt.StartSkill(targetEntity, bow.skillID, target))
            {
                if (GameConfig.IsMultiMode)
                {
                    NetworkInterface net = NetworkInterface.Get(motionMgr.Entity.Id);
                    if (null != net && net.hasOwnerAuth)
                    {
                        if (!m_IgnoreItem)
                        {
                            PlayerNetwork.mainPlayer.RequestItemCost(motionMgr.Entity.Id, bow.curItemID, 1);
                        }
                    }
                }
                else
                {
                    if (null != packageCmpt && !m_IgnoreItem)
                    {
                        packageCmpt.Destory(bow.curItemID, 1);
                    }
                }

                bow.SetArrowShowState(false);
                bow.SetBowOpenState(false);

                motionMgr.Entity.SendMsg(EMsg.Battle_EquipAttack, bow.ItemObj);

                if (null != bow.m_AttackMode)
                {
                    motionMgr.Entity.SendMsg(EMsg.Battle_OnAttack, bow.m_AttackMode[0], bow.transform, bow.curItemID);
                }
            }
        }