コード例 #1
0
        public virtual void Drop(PlayerEntity player, EWeaponSlotType slot, IUserCmd cmd)
        {
            if (slot == EWeaponSlotType.ThrowingWeapon)
            {
                DoDropGrenade(player, slot, cmd);
                return;
            }

            var heldAgent = player.WeaponController().HeldWeaponAgent;

            if (heldAgent.IsValid())
            {
                var  weaponScacn      = heldAgent.ComponentScan;
                bool generateSceneObj = player.WeaponController().DropWeapon(slot);
                if (!generateSceneObj || weaponScacn.IsUnSafeOrEmpty())
                {
                    return;
                }
                sceneObjectEntityFactory.CreateDropSceneWeaponObjectEntity(weaponScacn, player, sceneWeaponLifeTime, commonSession.FreeArgs);
            }
        }
コード例 #2
0
        public virtual void Drop(PlayerEntity player, EWeaponSlotType slot, IUserCmd cmd)
        {
            if (slot == EWeaponSlotType.ThrowingWeapon)
            {
                DoDropGrenade(player, slot, cmd);
                return;
            }
            var heldAgent = player.WeaponController().HeldWeaponAgent;

            if (heldAgent.IsValid())
            {
                var  dropPos          = player.GetHandWeaponPosition();
                var  playerTrans      = player.characterContoller.Value.transform;
                var  forward          = playerTrans.forward;
                var  pos              = dropPos + forward * runtimeGameConfig.WeaponDropOffset;
                var  weaponScacn      = heldAgent.ComponentScan;
                bool generateSceneObj = player.WeaponController().DropWeapon(slot);
                if (!generateSceneObj || weaponScacn.IsUnSafeOrEmpty())
                {
                    return;
                }
                //     DebugUtil.LogInUnity(weaponScacn.ToString(), DebugUtil.DebugColor.Black);
                RaycastHit        hhit;
                SceneObjectEntity sceneObjectEntity;
                if (Physics.Raycast(dropPos, forward, out hhit, runtimeGameConfig.WeaponDropOffset,
                                    UnityLayers.SceneCollidableLayerMask))
                {
                    RaycastHit vhit;
                    if (Physics.Raycast(hhit.point, Vector3.down, out vhit, 100, UnityLayers.SceneCollidableLayerMask))
                    {
                        sceneObjectEntity =
                            sceneObjectEntityFactory.CreateDropSceneWeaponObjectEntity(weaponScacn, vhit.point,
                                                                                       sceneWeaponLifeTime) as SceneObjectEntity;
                    }
                    else
                    {
                        sceneObjectEntity =
                            sceneObjectEntityFactory.CreateDropSceneWeaponObjectEntity(weaponScacn,
                                                                                       playerTrans.position, sceneWeaponLifeTime) as SceneObjectEntity;
                    }
                }
                else
                {
                    RaycastHit vhit;
                    if (Physics.Raycast(pos, Vector3.down, out vhit, 100, UnityLayers.SceneCollidableLayerMask))
                    {
                        sceneObjectEntity =
                            sceneObjectEntityFactory.CreateDropSceneWeaponObjectEntity(weaponScacn, vhit.point,
                                                                                       sceneWeaponLifeTime) as SceneObjectEntity;
                    }
                    else
                    {
                        sceneObjectEntity =
                            sceneObjectEntityFactory.CreateDropSceneWeaponObjectEntity(weaponScacn,
                                                                                       playerTrans.position, sceneWeaponLifeTime) as SceneObjectEntity;
                    }
                }

                IEventArgs args = commonSession.FreeArgs as IEventArgs;
                if (null != args && null != sceneObjectEntity)
                {
                    TriggerArgs ta = new TriggerArgs();
                    ta.AddPara(new IntPara("weaponId", weaponScacn.ConfigId));
                    ta.AddPara(new FloatPara("weaponx", sceneObjectEntity.position.Value.x));
                    ta.AddPara(new FloatPara("weapony", sceneObjectEntity.position.Value.y));
                    ta.AddPara(new FloatPara("weaponz", sceneObjectEntity.position.Value.z));
                    ta.AddUnit("current", (FreeData)player.freeData.FreeData);
                    args.Trigger(FreeTriggerConstant.WEAPON_DROP, ta);
                }
            }
        }