public void Shoot(float weightRateK, int successRate, bool isLeft) { if (BallState == BallStateEnum.Play) { BallState = BallStateEnum.Free; player = null; Vector3 desPos = isLeft ? basketRingL.transform.position : basketRingR.transform.position; float dis = Mathf.Abs(desPos.x - transform.position.x); for (int i = 0; i < DisRateAry.Length; ++i) { if (dis <= DisRateAry[i].dis || i == DisRateAry.Length) { successRate += DisRateAry[i].rate; break; } } bool success = Random.Range(1, 100) <= successRate; if (success == false) { float degree = Random.Range(MissDegreeMin, MissDegreeMax); desPos.z += Mathf.Sin(Mathf.Deg2Rad * degree); desPos.x += Mathf.Cos(Mathf.Deg2Rad * degree); } float time = CalcTime(desPos, transform.position, weightRateK); Vector3 speed = CalucSpeed(desPos, transform.position, time); rigibody.velocity = speed; } }
private void CheckRolling() { if (PlayerBall.IsSleeping()) { BallState = BallStateEnum.AIMING; strokeCanvas.enabled = true; } }
// Start is called before the first frame update void Start() { BallState = BallStateEnum.AIMING; strokeCanvas = GetComponentInChildren <Canvas>(); ChargeSpeed = (MaxStrokeForce - MinStrokeForce) / MaxChargeTime; CurrentStrokeForce = MinStrokeForce; StrokeSlider.value = MinStrokeForce; strokeCount = 0; }
private void Stroke() { Vector3 forceVec = new Vector3(0, 0, CurrentStrokeForce); PlayerBall.AddForce(Quaternion.Euler(0, StrokeAngle, 0) * forceVec, ForceMode.Impulse); BallState = BallStateEnum.ROLLING; CurrentStrokeForce = MinStrokeForce; StrokeSlider.value = MinStrokeForce; strokeCanvas.enabled = false; strokeCount++; }
private void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Player") { if (BallState == BallStateEnum.Free) { BallState = BallStateEnum.Play; player = other.gameObject; } } else if (other.gameObject.tag == "HoopL") { rigibody.velocity *= NetEffect; } else if (other.gameObject.tag == "HoopR") { rigibody.velocity *= NetEffect; } }
private void Update() { if (BallState == BallStateEnum.AIMING) { StrokeAngle += Input.GetAxis("Horizontal") * 100f * Time.deltaTime; if (Input.GetButtonUp("Fire")) { CurrentStrokeForce = MinStrokeForce; BallState = BallStateEnum.POWERING; return; } } if (BallState == BallStateEnum.POWERING) { CurrentStrokeForce += (ChargeSpeed * fillDirection) * Time.deltaTime; SetStrokeUI(); if (CurrentStrokeForce > MaxStrokeForce) { CurrentStrokeForce = MaxStrokeForce; fillDirection = -1; } else if (CurrentStrokeForce < MinStrokeForce) { CurrentStrokeForce = MinStrokeForce; fillDirection = 1; } if (Input.GetButtonUp("Fire")) { BallState = BallStateEnum.SHOOT; } } }
public void OnTriggerEnter (Collider collider) { Debug.Log("STATE:: " + _state); // SET Batted State if Collision with Bat if (collider.transform.name.Equals ("Bat") && (_state != BallStateEnum.Dead)) { State = BallStateEnum.Batted; } // != Batted Collisons if(collider.transform.name.Equals ("StrikeZone") && (_state != BallStateEnum.Batted)) { Debug.Log("[GameBallController]: OnTriggerEnter: " + collider.transform.name ); if(OnStrike != null && _state.ToString() != "Dead") { OnStrike(); } } else if (collider.transform.name.Equals ("BallZone") && (_state != BallStateEnum.Batted)) { Debug.Log("[GameBallController]: OnTriggerEnter: " + collider.transform.name ); if(OnBall != null && _state.ToString() != "Dead") { OnBall(); } } else if (collider.transform.name.Equals ("Ground") && (_state != BallStateEnum.Batted)) { Debug.Log("[GameBallController]: OnTriggerEnter: " + collider.transform.name ); if(OnBall != null && _state.ToString() != "Dead") { OnBall(); } } // == Batted Collisions else if (collider.transform.name.Equals ("Ground") && (_state == BallStateEnum.Batted)) { if(OnOut != null && _state.ToString() != "Dead") { OnOut(); } } else if (collider.transform.name.Equals ("BallZone") && (_state == BallStateEnum.Batted)) { if(OnStrike != null && _state.ToString() != "Dead") { OnStrike(); } } else if (collider.transform.name.Equals ("StrikeZone") && (_state == BallStateEnum.Batted)) { if(OnStrike != null && _state.ToString() != "Dead") { OnStrike(); } } else if (collider.transform.name.Equals ("FoulZoneL") && (_state == BallStateEnum.Batted) ) { if (OnFoulBall != null && _state.ToString() != "Dead") { OnFoulBall(); } } else if (collider.transform.name.Equals ("FoulZoneR") && (_state == BallStateEnum.Batted) ) { if (OnFoulBall != null && _state.ToString() != "Dead") { OnFoulBall(); } } else if (collider.transform.name.Equals ("SingleZone") && (_state == BallStateEnum.Batted) ) { if (OnSingle != null && _state.ToString() != "Dead") { OnSingle(); } } else if (collider.transform.name.Equals ("DoubleZone") && (_state == BallStateEnum.Batted) ) { if (OnDouble != null && _state.ToString() != "Dead") { OnDouble(); } } else if (collider.transform.name.Equals ("TripleZone") && (_state == BallStateEnum.Batted) ) { if (OnTriple != null && _state.ToString() != "Dead") { OnTriple(); } } else if (collider.transform.name.Equals ("HomeRuneZone") && (_state== BallStateEnum.Batted) ) { if (OnHomeRun != null && _state.ToString() != "Dead") { OnHomeRun(); } } }