Ejemplo n.º 1
0
 void CheckForMoving()
 {
     if (golfBallRb.IsSleeping() && ballScript.isAlive)
     {
         HitState = HitStateEnum.AIMING;
     }
 }
Ejemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        if (AreAllDead())
        {
            losingMessage.SetActive(true);
        }
        else
        {
            if (HitState == HitStateEnum.AIMING)
            {
                arrow.SetActive(true);
                DirAngle += Input.GetAxis("Horizontal") * 100f * Time.deltaTime;
                //Debug.Log(HitState);
                if (Input.GetKeyUp(KeyCode.Space))
                {
                    HitState = HitStateEnum.FORCE;
                    return;
                }
            }
            else
            {
                arrow.SetActive(false);
            }

            if (HitState == HitStateEnum.FORCE)
            {
                //Debug.Log(HitState);
                HitForce += (ForceFillingSpeed * fillDirection) * Time.deltaTime;
                if (HitForce > MaxForce)
                {
                    HitForce      = MaxForce;
                    fillDirection = -1;
                }

                if (MinForce > 0 && HitForce < MinForce)
                {
                    HitForce      = MinForce;
                    fillDirection = 1;
                }
                else
                {
                    if (HitForce < 0)
                    {
                        HitForce      = 0;
                        fillDirection = 1;
                    }
                }
                if (Input.GetKeyUp(KeyCode.Space))
                {
                    HitState = HitStateEnum.READYTOHIT;
                    //Debug.Log(HitState);
                }
            }
        }
    }
Ejemplo n.º 3
0
    //FixedUpdate runs on every tick of the physics engine
    void FixedUpdate()
    {
        if (golfBallRb == null)
        {
            return;
        }

        if (HitState != HitStateEnum.READYTOHIT)
        {
            if (HitState == HitStateEnum.ROLLING)
            {
                CheckForMoving();   //wait to stop
            }
            return;
        }


        Vector3 forceVec = new Vector3(0, 0, HitForce);

        golfBallRb.AddForce(Quaternion.Euler(0, DirAngle, 0) * forceVec, ForceMode.Impulse);
        HitForce      = MinForce > 0 ? MinForce : 0;
        fillDirection = 1;
        HitState      = HitStateEnum.ROLLING;
    }