Esempio n. 1
0
    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));
        }
    }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
    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);
            }
        }
    }