Ejemplo n.º 1
0
        public void Init(CarrierController controller, float maxForce, int count)
        {
            _controller = controller;
            _pushForce  = Mathf.Min(maxForce, _pushForce);

            _volume *= Mathf.Pow(0.75f, count - 1);
        }
Ejemplo n.º 2
0
 public void GetOffCarrier(Vector3 pos)
 {
     m_DrivingController = null;
     m_Seat         = null;
     mIsOnVCCarrier = false;
     if (null != onGetOffCarrier && null != carrier)
     {
         onGetOffCarrier(carrier);
     }
 }
Ejemplo n.º 3
0
        void OnGetOnSucceed(WhiteCat.CarrierController controller, int seatIndex)
        {
            m_DrivingController = controller;
            mIsOnVCCarrier      = true;

            if (null != onGetOnCarrier)
            {
                onGetOnCarrier(carrier);
            }
        }
Ejemplo n.º 4
0
    void OnPlayerGetOffCarrier(WhiteCat.CarrierController carrier)
    {
        if (mVehicle != null && mVehicle.peSkEntity != null)
        {
            mVehicle.peSkEntity.attackEvent -= OnPlayerVehicleAttack;
            mVehicle.peSkEntity.onHpReduce  -= OnPlayerVehicleBeAttack;

            mVehicle.peSkEntity.OnBeEnemyEnter -= OnVehicleEnemyEnter;
            mVehicle.peSkEntity.OnBeEnemyExit  -= OnVehicleEnemyExit;
        }

        mVehicle = null;

        mVehicleEnemies.Clear();
    }
Ejemplo n.º 5
0
    void OnPlayerGetOnCarrier(WhiteCat.CarrierController carrier)
    {
        mVehicle = carrier.GetComponent <PeEntity>();

        if (mVehicle != null && mVehicle.peSkEntity != null)
        {
            mVehicle.peSkEntity.attackEvent += OnPlayerVehicleAttack;
            mVehicle.peSkEntity.onHpReduce  += OnPlayerVehicleBeAttack;

            mVehicle.peSkEntity.OnBeEnemyEnter += OnVehicleEnemyEnter;
            mVehicle.peSkEntity.OnBeEnemyExit  += OnVehicleEnemyExit;
        }

        mPlayerEnemies.Clear();
    }
Ejemplo n.º 6
0
        void WhiteCat.IVCPassenger.GetOff()
        {
            if (null != mMotionMgr)
            {
                //mMotionMgr.DoAction(PEActionType.GetOnVehicle, sitAnimName, seat);
                m_DrivingController = null;
                m_Seat         = null;
                mIsOnVCCarrier = false;

                if (null != onGetOffCarrier)
                {
                    onGetOffCarrier(carrier);
                }
            }
        }
Ejemplo n.º 7
0
 public void GetOn(WhiteCat.CarrierController controller, int seatIndex, bool checkState)
 {
     if (null != mMotionMgr)
     {
         PEActionParamDrive param = PEActionParamDrive.param;
         param.controller = controller;
         param.seatIndex  = seatIndex;
         if (!checkState)
         {
             mMotionMgr.DoActionImmediately(PEActionType.Drive, param);
             OnGetOnSucceed(controller, seatIndex);
         }
         else if (mMotionMgr.DoAction(PEActionType.Drive, param))
         {
             OnGetOnSucceed(controller, seatIndex);
         }
     }
 }
Ejemplo n.º 8
0
    public bool GetOn(CommonInterface runner, int seatIndex)
    {
        if (null != Runner && null != Runner.SkEntityBase && runner != null)
        {
            PeEntity entity = Runner.SkEntityBase.GetComponent <PeEntity>();
            if (null != entity && null != runner.SkEntityPE && null != runner.SkEntityPE.Entity)
            {
                PassengerCmpt passenger = runner.SkEntityPE.Entity.GetCmpt <PassengerCmpt>();
                WhiteCat.CarrierController drivingController = entity.GetComponent <WhiteCat.CarrierController>();
                if (null != passenger && null != drivingController)
                {
                    passenger.GetOn(drivingController, seatIndex, false);
                    return(true);
                }
            }
        }

        return(false);
    }
        void CheckOwnerCarrier()
        {
            if (ownerEntity && _ownerCarrier != ownerEntity.passengerCmpt.carrier)
            {
                if (_ownerCarrier)
                {
                    _ownerCarrier.creationSkEntity.onHpReduce  -= OnOwnerHpReduce;
                    _ownerCarrier.creationSkEntity.attackEvent -= OnOwnerAttack;
                }

                _ownerCarrier = ownerEntity.passengerCmpt.carrier;

                if (_ownerCarrier)
                {
                    _ownerCarrier.creationSkEntity.onHpReduce  += OnOwnerHpReduce;
                    _ownerCarrier.creationSkEntity.attackEvent += OnOwnerAttack;
                }
            }
        }
Ejemplo n.º 10
0
 void Start()
 {
     _controller = GetComponentInParent <CarrierController>();
 }
Ejemplo n.º 11
0
        /// <summary> 乘客上载具 </summary>
        /// <param name="seatIndex"> 座位序号, -1 表示驾驶舱, 非负值表示普通座位序号 </param>
        public void GetOn(PeEntity entity, int seatIndex)
        {
            VCPBaseSeat seat = null;

            // 驾驶舱
            if (seatIndex < 0)
            {
                seat = _cockpit;

                ChangeOwner(entity);                      // 设置归属者(攻击判定相关)
                ResetHost(entity.Id);                     // 重置主控端

                // 玩家坐上驾驶舱
                if (isPlayerHost)
                {
                    _playerDriving = this;

                    UIDrivingCtrl.Instance.Show(
                        () => maxHp, () => hp, () => maxEnergy, () => energy,
                        () => { var v = rigidbody.velocity; return(Mathf.Sqrt(v.x * v.x + v.z * v.z) * 3.6f); },
                        () => _jetExhausts.Length > 0 ? _jetRestValue : 0);

                    seat.getOffCallback += () =>
                    {
                        _playerDriving = null;
                        UIDrivingCtrl.Instance.Hide();
                        UIDrivingCtrl.Instance.SetWweaponGroupTogglesVisible(false, this);
                        UISightingTelescope.Instance.Show(UISightingTelescope.SightingType.Null);
                    };

                    // 教程
                    TutorialData.AddActiveTutorialID(TutorialData.GetOnVehicle);
                }

                // 驾驶员离开驾驶舱
                seat.getOffCallback += () =>
                {
                    _inputState = OnDriverGetOff(_inputState);

                    _aimEntity    = null;
                    _lockedTarget = null;
                    _timeToLock   = -1f;
                    _isAttackMode = false;
                    DisableAllWeaponControl();

                    //终止撞击伤害技能
                    ActivateImpactDamage(false);
                };

                //单机模式玩家上车直接释放撞击伤害技能
                if (!GameConfig.IsMultiMode || IsController())
                {
                    ActivateImpactDamage(true);
                }
            }
            // 普通座位
            else
            {
                seat = _sideSeats[seatIndex];
            }

            _passengerCount += 1;

            seat.GetOn(entity.GetCmpt <PassengerCmpt>());

            // 当所有乘客都下车, 车的归属恢复默认
            seat.getOffCallback += () =>
            {
                _passengerCount -= 1;
                if (_passengerCount == 0)
                {
                    ChangeOwner(null);
                }
            };
        }
Ejemplo n.º 12
0
    public static void Update()
    {
        if (inited)
        {
            // System Settings
            SetGlobalFloat("Rotate Sensitivity", SystemSettingData.Instance.CameraSensitivity * 3.5f);
            SetGlobalFloat("Original Fov", SystemSettingData.Instance.CameraFov);
            SetGlobalBool("Inverse X", SystemSettingData.Instance.CameraHorizontalInverse);
            SetGlobalBool("Inverse Y", SystemSettingData.Instance.CameraVerticalInverse);

            // Character
            if (Pathea.MainPlayerCmpt.gMainPlayer != null)
            {
                Pathea.PeEntity        entity = Pathea.MainPlayerCmpt.gMainPlayer.Entity;
                Pathea.BiologyViewCmpt vcmpt  = entity.viewCmpt as Pathea.BiologyViewCmpt;
                Pathea.PeTrans         trans  = entity.peTrans;
                Pathea.PassengerCmpt   psgr   = entity.GetCmpt <Pathea.PassengerCmpt>();

                SetTransform("Anchor", trans.camAnchor);
                if (vcmpt.monoModelCtrlr != null)
                {
                    SetTransform("Character", Pathea.MainPlayerCmpt.gMainPlayer._camTarget);
                    SetTransform("Bone Neck M", Pathea.MainPlayerCmpt.gMainPlayer._bneckModel);
                }
                if (vcmpt.monoRagdollCtrlr != null)
                {
                    SetTransform("Bone Neck R", Pathea.MainPlayerCmpt.gMainPlayer._bneckRagdoll);
                }
                bool is_rag_doll = vcmpt.IsRagdoll;
                SetVar("Is Ragdoll", is_rag_doll);

                mainPlayerPosTracker.Record(trans.position, Time.time);
                SetVar("Character Velocity", mainPlayerPosTracker.aveVelocity);

                drivePosTracker.breakDistance = 10;
                drivePosTracker.maxRecord     = 4;
                drivePosTracker.Record(trans.position, Time.time);
                SetVar("Driving Velocity", drivePosTracker.aveVelocity);
                SetVar("Rigidbody Velocity", drivePosTracker.aveVelocity);

                activitySpaceSize = Utils.EvaluateActivitySpaceSize(trans.camAnchor.position, 0.5f, 50f, Vector3.up, 4f, obstacle_layermask);
                SetVar("Activity Space Size", activitySpaceSize);

                // Some vars
                SetBool("Lock Cursor Mode", lockCursorMode || PeInput.UsingJoyStick);
                SetVar("Arouse Cursor", arouseCursor);
                SetVar("Roll Mode", Pathea.MainPlayerCmpt.isCameraRollable);

                if (GetVar("Build Mode").value_b)
                {
                    //lz-2017.05.18 Tutorial模式下建造不允许进入自由视角
                    if (PeInput.Get(PeInput.LogicFunction.Build_FreeBuildModeOnOff) && !Pathea.PeGameMgr.IsTutorial)
                    {
                        freeLook = !freeLook;
                        camc.CrossFade("Global Blend", freeLook ? 0 : 1, 0.3f);
                    }
                }
                else
                {
                    int mode = 1;
                    if (psgr != null)
                    {
                        WhiteCat.CarrierController dc = psgr.drivingController;
                        if (dc != null)
                        {
                            mode = 2;
                            SetVar("Vehicle Arm", dc.isAttackMode);
                        }
                    }
                    camc.CrossFade("Global Blend", mode, 0.3f);
                    freeLook = false;
                }
                UpdateShake();
            }
            // Internal Logic
#if true
            if (PeInput.Get(PeInput.LogicFunction.ChangeContrlMode))
            {
                if (SystemSettingData.Instance.FirstPersonCtrl)
                {           // F3->F1
                    lockCursorMode = false;
                    SystemSettingData.Instance.mMMOControlType = true;
                    SystemSettingData.Instance.FirstPersonCtrl = false;
                    SystemSettingData.Instance.dataDirty       = true;
                    if (onControlModeChange != null)
                    {
                        onControlModeChange.Invoke(ControlMode.ThirdPerson);
                    }
                }
                else if (SystemSettingData.Instance.mMMOControlType)
                {   // F1->F2
                    lockCursorMode = true;
                    SystemSettingData.Instance.mMMOControlType = false;
                    SystemSettingData.Instance.FirstPersonCtrl = false;
                    SystemSettingData.Instance.dataDirty       = true;
                    if (onControlModeChange != null)
                    {
                        onControlModeChange.Invoke(ControlMode.MMOControl);
                    }
                }
                else
                {                                                   // F2->F3
                    lockCursorMode = true;
                    SystemSettingData.Instance.FirstPersonCtrl = true;
                    SystemSettingData.Instance.dataDirty       = true;
                    if (onControlModeChange != null)
                    {
                        onControlModeChange.Invoke(ControlMode.FirstPerson);
                    }
                }
            }
#else
            if (PeInput.Get(PeInput.LogicFunction.F1Mode))
            {
                lockCursorMode = false;
                SystemSettingData.Instance.mMMOControlType = true;
                SystemSettingData.Instance.FirstPersonCtrl = false;
                SystemSettingData.Instance.dataDirty       = true;
            }
            else if (PeInput.Get(PeInput.LogicFunction.F2Mode))
            {
                lockCursorMode = true;
                SystemSettingData.Instance.mMMOControlType = false;
                SystemSettingData.Instance.FirstPersonCtrl = false;
                SystemSettingData.Instance.dataDirty       = true;
            }
            else if (PeInput.Get(PeInput.LogicFunction.F3Mode))
            {
                lockCursorMode = true;
                SystemSettingData.Instance.FirstPersonCtrl = true;
                SystemSettingData.Instance.dataDirty       = true;
            }
#endif
            if (shootModeIndex == 0 && shootModeTime > 0)
            {
                shootModeTime -= Time.deltaTime;
                if (shootModeTime <= 0)
                {
                    camc.CrossFade("3rd Person Blend", 0, 0.05f);
                    camc.CrossFade("1st Person Blend", 0, 0.05f);
                }
            }

            if (isFirstPerson)
            {
                SetVar("1st Offset Up", camModeData.offsetUp);
                SetVar("1st Offset", camModeData.offset);
                SetVar("1st Offset Down", camModeData.offsetDown);
            }

            // Mouse states
            SetGlobalVar("Mouse On Scroll", UIMouseEvent.opAnyScroll);
            SetGlobalVar("Mouse On GUI", UIMouseEvent.onAnyGUI);
            SetGlobalVar("Mouse Op GUI", UIMouseEvent.opAnyGUI);
        }
    }