/// <summary> /// 结束输入移动 /// </summary> /// <param name="direction">移动方向</param> public void EndInputMoveDirection() { isinput = false; MountsComponent mountsComponent = Owner.GetUnitComponent <MountsComponent>(); if (mountsComponent != null && mountsComponent.IsRide) { mountsComponent.SetRun(false); } }
private void UpdateGravity(float deltaTime, float unscaledDeltaTime) { MountsComponent mountsComponent = Owner.GetUnitComponent <MountsComponent>(); if (mountsComponent != null && mountsComponent.IsRide) { mountsComponent.Mounts.CharacterController.Move(Vector3.down * 9.8f * deltaTime); return; } if (m_CharacterController.isGrounded) { return; } m_CharacterController.Move(Vector3.down * 9.8f * deltaTime); }
/// <summary> /// 更新输入 /// </summary> private void UpdateInput(float deltaTime, float unscaledDeltaTime) { MountsComponent mountsComponent = Owner.GetUnitComponent <MountsComponent>(); if (mountsComponent != null && mountsComponent.IsRide) { mountsComponent.Mounts.transform.rotation = Quaternion.Slerp(Owner.transform.rotation, InputRotation, deltaTime * 15f); mountsComponent.Mounts.CharacterController.Move(m_InputMoveDirection * Speed * m_InputSpeed * deltaTime); mountsComponent.SetRun(true); return; } Owner.transform.rotation = Quaternion.Slerp(Owner.transform.rotation, InputRotation, deltaTime * 15f); m_CharacterController.Move(m_InputMoveDirection * Speed * m_InputSpeed * deltaTime); m_AnimatorComponent.SetFloatValue(Constant.AnimatorParam.Speed, Speed * m_InputSpeed); }
protected internal override void OnAttached(EntityBase childEntity, Transform parentTransform, object userData) { base.OnAttached(childEntity, parentTransform, userData); AnimatorComponent owneranimatorComponent = m_Owner.GetOrAddUnitComponent <AnimatorComponent>(); owneranimatorComponent.SetBoolValue(Constant.AnimatorParam.IsRide, true); RideEntity rideEntity = GameEntry.DataTable.GetDataTable <RideDBModel>().Get(m_MountsData.TypeId); owneranimatorComponent.SetIntValue(Constant.AnimatorParam.RideType, rideEntity.RideType); m_Owner.GetOrAddUnitComponent <AnimatorComponent>().SetBoolValue(Constant.AnimatorParam.IsRide, true); MountsComponent mountsComponent = m_Owner.GetUnitComponent <MountsComponent>(); mountsComponent.IsRide = true; mountsComponent.Mounts = this; }
protected internal override void OnShow(object userData) { base.OnShow(userData); m_MountsData = userData as MountsData; if (m_MountsData == null) { GameEntry.Entity.HideEntity(this); Log.Error("Mounts data is invalid."); return; } m_CharacterController = gameObject.GetOrAddComponent <CharacterController>(); m_CharacterController.center = new Vector3(0, 1, 0); m_CharacterController.height = 2f; m_CharacterController.radius = 0.5f; m_CharacterController.stepOffset = 0.5f; animatorComponent = GetOrAddUnitComponent <AnimatorComponent>(); m_Owner = (PlayerBase)GameEntry.Entity.GetEntity(m_MountsData.OwnerId); if (m_Owner == null || !m_Owner.IsAvailable) { GameEntry.Entity.HideEntity(this); return; } MountsComponent mountsComponent = m_Owner.GetUnitComponent <MountsComponent>(); if (mountsComponent == null || mountsComponent.IsRide) { GameEntry.Entity.HideEntity(this); return; } this.gameObject.SetLayerRecursively(m_Owner.gameObject.layer); SelfTransform.position = m_Owner.SelfTransform.position; SelfTransform.rotation = m_Owner.SelfTransform.rotation; RideEntity rideEntity = GameEntry.DataTable.GetDataTable <RideDBModel>().Get(m_MountsData.TypeId); GameEntry.Entity.AttachEntity(m_Owner, this, rideEntity.Point); }
/// <summary> /// 遥感中心点点击 /// </summary> /// <param name="gameEventBase"></param> private void OnRockerInClick(GameEventBase gameEventBase) { RockerInClickGameEvent rockerInClickGameEvent = (RockerInClickGameEvent)gameEventBase; MountsComponent mountsComponent = Owner.GetUnitComponent <MountsComponent>(); if (mountsComponent == null) { return; } if (mountsComponent.IsRide) { mountsComponent.HideMounts(); } else { mountsComponent.ShowMounts(UnityEngine.Random.Range(1, 10)); } }
public override void OnUpdate(float deltaTime, float unscaledDeltaTime) { if (isforceBack) { MountsComponent mountsComponent = Owner.GetUnitComponent <MountsComponent>(); forceTime += unscaledDeltaTime; if (forceTime > forceNeedTime) { isforceBack = false; canContrl = true; if (mountsComponent != null && mountsComponent.IsRide) { mountsComponent.Mounts.transform.position = this.moveTarget; return; } Owner.transform.position = this.moveTarget; return; } float amount = forceTime * 1f / forceNeedTime; if (mountsComponent != null && mountsComponent.IsRide) { mountsComponent.Mounts.transform.position = Vector3.Lerp(this.startPosition, this.moveTarget, amount); return; } Owner.transform.position = Vector3.Lerp(this.startPosition, this.moveTarget, amount); return; } UpdateGravity(deltaTime, unscaledDeltaTime); if (isinput && canContrl) { UpdateInput(deltaTime, unscaledDeltaTime); return; } m_AnimatorComponent.SetFloatValue(Constant.AnimatorParam.Speed, 0); }