private void HitBall(Vector3 recordPos) { GameEventModuel eventModuel = GameStart.GetInstance().EventModuel; Vector2 dir = CalculateHitBallDir(recordPos); if (m_characterControl != null) { eventModuel.SendEvent(GameEventID.ENTITY_HIT_BALL, true, 0f, EHitForceType.Middle, new Vector2(dir.x, dir.y)); } else { EHitForceType type = (EHitForceType)Random.Range((int)EHitForceType.Soft, (int)EHitForceType.High); eventModuel.SendEvent(GameEventID.AI_HIT_BALL, true, 0f, type, new Vector2(dir.x, dir.y)); } }
private float GetSpeed(EHitForceType forceType) { float value = m_speedRate.y; switch (forceType) { case EHitForceType.Soft: value = m_speedRate.x; break; case EHitForceType.Middle: value = m_speedRate.y; break; case EHitForceType.High: value = m_speedRate.z; break; } return(value); }
private void HandleHitBallMessage(GameEvent eve) { if (eve != null) { //播放动画 PlayAnim(""); EHitForceType forceType = eve.GetParamByIndex <EHitForceType>(0); m_dir = eve.GetParamByIndex <Vector2>(1); m_speed = GetSpeed(forceType); if (m_rigidBody != null) { m_rigidBody.velocity = m_dir.normalized * m_speed; } if (m_particle != null && forceType >= EHitForceType.Middle) { m_particle.gameObject.SetActive(true); } } }