Пример #1
0
 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;
     }
 }
Пример #2
0
 private void CheckRolling()
 {
     if (PlayerBall.IsSleeping())
     {
         BallState            = BallStateEnum.AIMING;
         strokeCanvas.enabled = true;
     }
 }
Пример #3
0
    // 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;
    }
Пример #4
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++;
    }
Пример #5
0
 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;
     }
 }
Пример #6
0
    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();
				}
			}


		}