/*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); }
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); }
protected virtual void OnBallHit(Player player) { BallHit?.Invoke(player); }