// Start is called before the first frame update
    void Start()
    {
        // set to die by default
        objectSelection         = TogglableObject.D6;
        CurrentObjectToBeThrown = instantiateSelectedObject();

        d6Selector.angularDrag = selectorActive;

        objectReleaseIntensity = defaultObjectReleaseIntensity;

        // Add the light component

        lightGameObject = new GameObject("The Light");
        lightComp       = lightGameObject.AddComponent <Light>();

        // Set color and position
        lightComp.color     = new Color(255, 244, 214, 255);
        lightComp.intensity = 0.005f;
        lightComp.type      = LightType.Directional;

        // Set the position (or any transform property)
        lightGameObject.transform.position    = new Vector3(14.01f, 13.34f, 2.92f);
        lightGameObject.transform.eulerAngles = new Vector3(
            lightGameObject.transform.eulerAngles.x + 50,
            lightGameObject.transform.eulerAngles.y - 30,
            lightGameObject.transform.eulerAngles.z
            );


        Cursor.SetCursor(cursorTexture, hotSpot, cursorMode);

        Time.timeScale  = 2;
        Physics.gravity = new Vector3(0.0f, -6.5f, 0.0f);
    }
    // Update is called once per frame
    void Update()
    {
        // user is throwing an object
        if (Input.GetKeyUp(KeyCode.Space))
        {
            if (CurrentObjectToBeThrown != null)
            {
                throwObject();
            }
        }

        // user is charging up the dice throw
        if (Input.GetKey(KeyCode.Space))
        {
            if (CurrentObjectToBeThrown != null)
            {
                if (objectReleaseIntensity < maxObectReleaseIntensity)
                {
                    objectReleaseIntensity += intensityReleaseChangePerFrame;
                }

                rotateCurrentObjectX(objectReleaseIntensity);

                if (objectSelection != TogglableObject.Bottle)
                {
                    rotateCurrentObjectZ(objectReleaseIntensity);
                }
            }
        }

        // increase gravity
        if (Input.GetKey(KeyCode.Z))
        {
            if (Physics.gravity.y < -3.05)
            {
                Physics.gravity = new Vector3(0.0f, Physics.gravity.y + 0.02f, 0.0f);
            }
        }

        // decrease gravity
        if (Input.GetKey(KeyCode.X))
        {
            if (Physics.gravity.y > -15)
            {
                Physics.gravity = new Vector3(0.0f, Physics.gravity.y - 0.02f, 0.0f);
            }
        }

        // decrease light intensity
        if (Input.GetKey(KeyCode.A))
        {
            if (lightComp.intensity > 0.001)
            {
                lightComp.intensity = lightComp.intensity - 0.0001f;
            }
        }

        // increase light intensity
        if (Input.GetKey(KeyCode.S))
        {
            if (lightComp.intensity < 0.015)
            {
                lightComp.intensity = lightComp.intensity + 0.0001f;
            }
        }

        // toggle die result floating towards user
        if (Input.GetKey(KeyCode.R))
        {
            moveResultTowardUser = !moveResultTowardUser;
        }

        // change to normal dice box surface
        if (Input.GetKeyUp(KeyCode.Alpha8))
        {
            setNormalSurface();
        }

        // change to icy dice box surface
        if (Input.GetKeyUp(KeyCode.Alpha9))
        {
            setIcySurface();
        }

        // change to sand paper surface
        if (Input.GetKeyUp(KeyCode.Alpha0))
        {
            setSandpaperSurface();
        }

        // switch to d6 object
        if (Input.GetKeyUp(KeyCode.Alpha1))
        {
            objectSelection = TogglableObject.D6;
            Destroy(CurrentObjectToBeThrown.gameObject);
            CurrentObjectToBeThrown = instantiateSelectedObject();

            d6Selector.angularDrag     = selectorActive;
            d20Selector.angularDrag    = selectorInactive;
            bottleSelector.angularDrag = selectorInactive;
        }

        // switch to d20 object
        if (Input.GetKeyUp(KeyCode.Alpha2))
        {
            objectSelection = TogglableObject.D20;
            Destroy(CurrentObjectToBeThrown.gameObject);
            CurrentObjectToBeThrown = instantiateSelectedObject();

            d6Selector.angularDrag     = selectorInactive;
            d20Selector.angularDrag    = selectorActive;
            bottleSelector.angularDrag = selectorInactive;
        }

        // switch to bottle object
        if (Input.GetKeyUp(KeyCode.Alpha3))
        {
            objectSelection = TogglableObject.Bottle;
            Destroy(CurrentObjectToBeThrown.gameObject);
            CurrentObjectToBeThrown = instantiateSelectedObject();

            d6Selector.angularDrag     = selectorInactive;
            d20Selector.angularDrag    = selectorInactive;
            bottleSelector.angularDrag = selectorActive;
        }

        // turn comet trail on
        if (Input.GetKeyUp(KeyCode.O))
        {
            enableCometTrail();
        }
        else if (Input.GetKeyUp(KeyCode.P))
        {
            // disable comet trail
            disableCometTrail();
        }

        // clear playing area of rollable objects
        if (Input.GetKeyUp(KeyCode.C))
        {
            deleteRollableObjects();
        }

        // rotate object forward (away from user)
        if (Input.GetKey(KeyCode.UpArrow))
        {
            rotateCurrentObjectX(-1 * objectReleaseIntensity);
        }
        else if (Input.GetKey(KeyCode.DownArrow))
        {
            // rotate backward (towards user)
            rotateCurrentObjectX(objectReleaseIntensity);
        }

        // rotate object to the left (negative yaw)
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            rotateCurrentObjectY(objectReleaseIntensity);
        }
        else if (Input.GetKey(KeyCode.RightArrow))
        {
            // rotate object to the right (positive yaw)
            rotateCurrentObjectY(-1 * objectReleaseIntensity);
        }

        if (Input.GetKey(KeyCode.Escape))
        {
            Application.Quit();
        }

        this.updateDice();
        updateResults();
        int result = this.getResult();
    }
Ejemplo n.º 3
0
    IEnumerator Timer(float time, TogglableObject itemToClose)
    {
        if (time > 1.5f)
        {
            yield return(new WaitForSeconds(time - 1.5f));

            Debug.Log("flashing");
            gameObject.GetComponent <SpriteRenderer>().color = Color.yellow;
            leverCollider.enabled = true;
            yield return(new WaitForSeconds(0.25f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.grey;
            yield return(new WaitForSeconds(0.25f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.yellow;
            yield return(new WaitForSeconds(0.25f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.grey;
            yield return(new WaitForSeconds(0.25f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.yellow;
            yield return(new WaitForSeconds(0.125f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.grey;
            yield return(new WaitForSeconds(0.125f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.yellow;
            yield return(new WaitForSeconds(0.125f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.grey;
            yield return(new WaitForSeconds(0.125f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.yellow;
            itemToClose.Toggle();
            state = false;
        }

        else if (time > 1)
        {
            yield return(new WaitForSeconds(time - 1));

            Debug.Log("flashing");
            gameObject.GetComponent <SpriteRenderer>().color = Color.yellow;
            leverCollider.enabled = true;
            yield return(new WaitForSeconds(0.25f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.grey;
            yield return(new WaitForSeconds(0.25f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.yellow;
            yield return(new WaitForSeconds(0.25f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.grey;
            yield return(new WaitForSeconds(0.25f));

            gameObject.GetComponent <SpriteRenderer>().color = Color.yellow;
            itemToClose.Toggle();
            state = false;
        }

        else
        {
            leverCollider.enabled = true;
            yield return(new WaitForSeconds(time));

            Debug.Log("yellow lever");
            itemToClose.Toggle();
            state = false;
            gameObject.GetComponent <SpriteRenderer>().color = Color.yellow;
        }
    }