public void Init(CarrierController controller, float maxForce, int count) { _controller = controller; _pushForce = Mathf.Min(maxForce, _pushForce); _volume *= Mathf.Pow(0.75f, count - 1); }
public void GetOffCarrier(Vector3 pos) { m_DrivingController = null; m_Seat = null; mIsOnVCCarrier = false; if (null != onGetOffCarrier && null != carrier) { onGetOffCarrier(carrier); } }
void OnGetOnSucceed(WhiteCat.CarrierController controller, int seatIndex) { m_DrivingController = controller; mIsOnVCCarrier = true; if (null != onGetOnCarrier) { onGetOnCarrier(carrier); } }
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(); }
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(); }
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); } } }
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); } } }
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; } } }
void Start() { _controller = GetComponentInParent <CarrierController>(); }
/// <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); } }; }
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); } }