Example #1
0
    /*void LateUpdate()
     * {
     *      if( m_smoothFollow.getTarget() ){
     *              m_smoothFollow.update();
     *      }
     * }*/
    GameObject startHit(Vector3 pos, Vector3 dir, float speed)
    {
        if (m_bPhaseLog)
        {
            GigaTrax.Debug.Log("startHit");
        }

        GameObject ball     = Instantiate(prefabBallHit);
        BallHit    ball_hit = ball.GetComponent <BallHit>();

        ball.transform.localPosition = pos;

        Rigidbody rb = ball.GetComponent <Rigidbody>();

        rb.velocity = dir * speed;

        addHitInfo(ball, speed * MPS2KPH);

        if (m_smoothFollow)
        {
            m_smoothFollow.setTarget(ball);
        }
        m_lastHit = addHitBall(ball);

        setGamePhase(GamePhase_Hit);
        m_objBatter.setAnim(BatterAnim.BatterAnim_Hit);
        m_objCamera.fieldOfView = 54;

        return(ball);
    }
Example #2
0
    public void HitGround(GameObject ball)
    {
        Vector3 pos = ball.transform.localPosition;

        Vector3 org      = new Vector3(0, 0, 0);
        float   distance = Vector3.Distance(org, pos);

        BallHit ball_hit = ball.GetComponent <BallHit>();

        //HitRecord record = ball_hit.getRecord();
        int num = m_RecordArray.Count;

        for (int i = 0; i < num; i++)
        {
            HitRecord record = m_RecordArray[i];
            if (ball == record.ball)
            {
                record.distance = distance;
                record.ball     = null;

                int index = (m_RecordArray.Count - 1) - i;
                if (index < NumHitRecord)
                {
                    setHitDistance_(distance, m_objHitRecord[index]);
                }
                break;
            }
        }
        //setFlyDistInfo( distance );
        //setLRDistInfo( pos.x );

        //if( m_nGamePhase != GamePhase_HitGround && ball == m_lastHit.obj ){
        //	setGamePhase( GamePhase_HitGround );
        //}
        //GigaTrax.Debug.Log( "Distance: " + distance.ToString("f2") + " m" );
        int num_hit = m_HitArray.Count;

        for (int i = 0; i < num_hit; i++)
        {
            HitBall hit = m_HitArray[i];
            if (hit.obj == ball)
            {
                hit.ground = true;
                hit.dTime  = HitGroundDuration;
                break;
            }
        }

        int num_info = m_HitInfoArray.Count;

        for (int i = 0; i < num_info; i++)
        {
            HitInfo info = m_HitInfoArray[i];
            if (info.ball == ball)
            {
                info.ball     = null;
                info.ground   = true;
                info.distance = distance;
                updateHitInfo(info);

                Destroy(info.objInfo, HitInfoDuration);

                m_HitInfoArray.RemoveAt(i);
                break;
            }
        }

        GameObject ballEffect = Instantiate(prefabBallEffect);

        ballEffect.transform.localPosition = new Vector3(pos.x, 0.05f, pos.z);
        Destroy(ballEffect, 1.0f);
    }
Example #3
0
 protected virtual void OnBallHit(Player player)
 {
     BallHit?.Invoke(player);
 }