コード例 #1
0
ファイル: ItemInteraction.cs プロジェクト: JonECG/Spoopy
    // Update is called once per frame
    void Update()
    {
        throwCorrected = Debouncer.Debounce("Throw", throwCorrected);
        if (isPickedUp)
        {
            transform.parent = null;
            GameObject playerHead = GameObject.Find("LitCamera");

            RaycastHit info;
            Physics.Raycast(playerHead.transform.position, playerHead.transform.forward, out info, 2, 1 << LayerMask.NameToLayer("Map"));
            transform.position = (playerHead.transform.position + (playerHead.transform.forward.normalized * (info.collider != null ? info.distance - 0.1f : 2)));

            GetComponent<Rigidbody>().velocity = new Vector3();

            if (throwCorrected.IsPressed())
            {
                isPickedUp = false;
            }

            if (Time.time - lastTimeNotHeld > 20 && ItemInventory.objects.Count == 0)
            {
                HeadsUpDisplayController.Instance.DrawText("You can store multiple items in your inventory", 0, 0.5f, Color.yellow, 0.05f);
                HeadsUpDisplayController.Instance.DrawText("To access your inventory look down to your left", 0, 0.3f, Color.yellow, 0.05f);
            }
        }
        else
        {
            lastTimeNotHeld = Time.time;
        }

        if (ItemInventory.isInBag(this) && !ItemInventory.isOpen)
        {
            transform.position = (new Vector3(0, -100.0f, 0));
        }
    }
コード例 #2
0
ファイル: ChalkScript.cs プロジェクト: JonECG/Spoopy
 // Update is called once per frame
 void Update()
 {
     chalkCorrected = Debouncer.Debounce("Chalk", chalkCorrected);
     if (chalkCorrected.IsDown())
     {
         placeChalk();
     }
 }
コード例 #3
0
 void Update()
 {
     pressACorrected = Debouncer.Debounce("Interact", pressACorrected);
     if (waitStarted == 0)
     {
         if (pressACorrected.IsPressed())
         {
             waitStarted = Time.time;
             GetComponent<Renderer>().material.mainTexture = two;
         }
     }
     else
     {
         if (waitStarted < Time.time - waitTime)
         {
             Application.LoadLevel(1);
         }
     }
 }
コード例 #4
0
ファイル: HeadLamp.cs プロジェクト: JonECG/Spoopy
    void Update()
    {
        bool tapped = false;
        //if( !Application.isEditor )
        {
            Ovr.Vector3f ang = OVRManager.capiHmd.GetTrackingState().HeadPose.AngularAcceleration;
            deltaAccel = Mathf.Abs(ang.x) + Mathf.Abs(ang.y) + Mathf.Abs(ang.z);

            tapRest -= Time.deltaTime;

            if (deltaAccel > tapThreshold && tapRest <= 0)
            {
                Debug.Log("Tap");
                deltaAccel = 0;
                tapRest = tapDelay;
                tapped = true;
            }
        }

        headLampToggleCorrected = Debouncer.Debounce("HeadLampToggle", headLampToggleCorrected);
        headLampChargeCorrected = Debouncer.Debounce("HeadLampRecharge", headLampChargeCorrected);

        if (currentBatteryLife > 0)
        {
            lastTimeWithCharge = Time.time;
        }

        if (Time.time - lastTimeWithCharge > delayForPromptingRecharge)
        {
            HeadsUpDisplayController.Instance.DrawText("Press (X) Several Times to Recharge Your Headlamp", 0, 0.5f, Color.yellow, 0.05f);
            HeadsUpDisplayController.Instance.DrawText("Then Press (Y) to Turn Your Headlamp On", 0, 0.3f, Color.yellow, 0.05f);
        }

        if (headLampToggleCorrected.IsPressed())
        {
            if( SoundManagerController.Instance != null )
                SoundManagerController.Instance.PlaySoundAt(isTurnedOn ? clickOff : (currentBatteryLife > 0) ? clickOn : clickDead, transform.position, "PlayerMadeSound");
            if (currentBatteryLife > 0)
                isTurnedOn = !isTurnedOn;
        }

        if (headLampChargeCorrected.IsPressed() || tapped)
        {
            currentBatteryLife = Mathf.Min(batteryLifeInSeconds, currentBatteryLife + batteryLifeInSeconds / numberOfShakesToCharge);
            if (SoundManagerController.Instance != null)
                SoundManagerController.Instance.PlaySoundAt((currentBatteryLife == batteryLifeInSeconds) ? rechargeFull : recharge, transform.position, "PlayerMadeSound");
        }

        if (isTurnedOn)
        {
            currentBatteryLife -= Time.deltaTime;

            if (currentBatteryLife <= 0)
            {
                currentBatteryLife = 0;
                isTurnedOn = false;
                if (SoundManagerController.Instance != null)
                    SoundManagerController.Instance.PlaySoundAt(clickOff, transform.position, "PlayerMadeSound");
            }
        }

        if (isTurnedOn)
        {
            float weakenedPower = (currentBatteryLife > weakenTime) ? 1 : currentBatteryLife / weakenTime;
            GetComponent<Light>().enabled = Random.value <= weakenedPower;
            GetComponent<Light>().intensity = weakenedPower * maxIntensity;
            glow.intensity = weakenedPower * maxGlow;
        }
        else
        {
            GetComponent<Light>().enabled = false;
        }

        glow.enabled = GetComponent<Light>().enabled;
    }
コード例 #5
0
ファイル: PlayerMovement.cs プロジェクト: JonECG/Spoopy
    // Update is called once per frame
    void Update()
    {
        Vector3 rightReference = anchor.rotation * new Vector3(1, 0, 0);
        Vector3 upReference = anchor.rotation * new Vector3(0, 1, 0);
        Vector3 forwardReference = anchor.rotation * new Vector3(0, 0, 1);

        Vector3 movement = new Vector3();

        sprintCorrected = Debouncer.Debounce("Sprint", sprintCorrected);
        if (sprintCorrected.IsDown())
            sprintStamina -= Time.deltaTime / sprintDuration;
        else
            sprintStamina += Time.deltaTime / sprintRecovery;
        sprintStamina = Mathf.Clamp(sprintStamina, 0, 1);

        fallingSpeed -= gravity * Time.deltaTime;

        if (!inventory.isDrawnOut)
        {
            movement += new Vector3(forwardReference.x, 0, forwardReference.z).normalized * (sprintCorrected.IsDown() && sprintStamina > 0 ? sprintMultiplier : 1) * Time.deltaTime * moveSpeed * Input.GetAxis("Vertical");
            movement += new Vector3(rightReference.x, 0, rightReference.z).normalized * (sprintCorrected.IsDown() && sprintStamina > 0 ? sprintMultiplier : 1) * Time.deltaTime * moveSpeed * Input.GetAxis("Horizontal");
        }
        movement.y += fallingSpeed;

        GetComponent<CharacterController>().Move(movement);

        if (GetComponent<CharacterController>().isGrounded)
        {
            fallingSpeed = 0;
        }

        float lateral = Input.GetAxis("Mouse X");
        float longinal = Input.GetAxis("Mouse Y");
        float longinalStick = Input.GetAxis("TurningX");

        float headAngle = Mathf.Atan2(forwardReference.z, forwardReference.x);
        float playerAngle = Mathf.Atan2(transform.forward.z, transform.forward.x);
        float diffAngle = Mathf.Deg2Rad * (Mathf.Repeat((Mathf.Repeat((playerAngle - headAngle) * Mathf.Rad2Deg, 360)) + 540, 360) - 180);
        float normDiffAngle = Mathf.Sign( diffAngle ) * Mathf.Pow( diffAngle / Mathf.PI, 2 );
        normDiffAngle *= 7;

        float moveMultiplier = normDiffAngle / Mathf.Sqrt(1 + normDiffAngle * normDiffAngle) + 1;
        moveMultiplier = Mathf.Pow(moveMultiplier, 2);
        moveMultiplier /= 2;

        float invMoveMultiplier = -normDiffAngle / Mathf.Sqrt(1 + normDiffAngle * normDiffAngle) + 1;
        invMoveMultiplier = Mathf.Pow(invMoveMultiplier, 2);
        invMoveMultiplier /= 2;

        //HeadsUpDisplayController.Instance.DrawText(normDiffAngle.ToString(), 0, 0.2f, Color.green);
        //HeadsUpDisplayController.Instance.DrawText(moveMultiplier.ToString(), 0, 0.3f, Color.yellow);

        if (GameObject.Find("LeftEyeAnchor") != null)
        {
            if (!inventory.isDrawnOut)
                transform.Rotate(new Vector3(0, 1, 0), longinalStick * mouseSensitivity * ( longinalStick > 0 ? moveMultiplier : invMoveMultiplier ));
        }
        else
        {
            if (!inventory.isDrawnOut)
                transform.Rotate(new Vector3(0, 1, 0), (lateral + longinalStick ) * mouseSensitivity);
            head.Rotate(new Vector3(1, 0, 0), -(longinal) * mouseSensitivity);
        }
    }
コード例 #6
0
ファイル: ItemHandler.cs プロジェクト: JonECG/Spoopy
    // Update is called once per frame
    void Update()
    {
        pickupCorrected = Debouncer.Debounce("PickUp", pickupCorrected);
        openInventory = Debouncer.Debounce("OpenInventory", openInventory);
        storeCorrected = Debouncer.Debounce("Store", storeCorrected);
        interactCorrected = Debouncer.Debounce("Interact", interactCorrected);

        List<ItemInteraction> items = ItemInteraction.allItems;
        List<DoorKnob> doors = DoorKnob.allDoors;

        float angle = 360.0f;

        GameObject playerHead = GameObject.Find("LitCamera");

        angle = Vector3.Angle(playerHead.transform.forward, inventory.transform.position - playerHead.transform.position);

        int selection = -1;
        for (int i = 0; i < items.Count && angle>0; i++)
        {
            if (items[i] != null)
            {
                if (Vector3.Distance(playerHead.transform.position, items[i].transform.position) < 3 && Vector3.Angle(playerHead.transform.forward, items[i].transform.position - playerHead.transform.position) < angle)
                {
                    angle = Vector3.Angle(playerHead.transform.forward, items[i].transform.position - playerHead.transform.position);
                    selection = i;
                }

                if (items[i].isPickedUp)
                {
                    angle = 0;
                    selection = i;
                }
            }
        }

        for (int i = 0; i < doors.Count && angle > 0; i++)
        {
            if (doors[i] != null)
            {
                if (Vector3.Distance(playerHead.transform.position, doors[i].transform.position) < 3 && Vector3.Angle(playerHead.transform.forward, doors[i].transform.position - playerHead.transform.position) < angle)
                {
                    angle = Vector3.Angle(playerHead.transform.forward, doors[i].transform.position - playerHead.transform.position);
                    selection = i + items.Count;
                }
                if (doors[i].isGrabbed)
                {
                    angle = 0;
                    selection = i + items.Count;
                }
            }
        }

        if (angle < 25)
        {
            if (selection >= 0 && selection < items.Count)
            {
                //Picking up
                if (pickupCorrected.IsPressed() && !items[selection].isPickedUp)
                {
                    TakeItemTriggerer t = items[selection].GetComponent<TakeItemTriggerer>();
                    if( t != null )
                        t.Take();

                    if (items[selection].isTakeable)
                    {
                        Destroy(items[selection].gameObject);
                    }
                    else
                    {
                        items[selection].isPickedUp = true;
                        if (ItemInventory.isInBag(items[selection]))
                        {
                            ItemInventory.removeItem(items[selection]);
                            ItemInventory.isOpen = false;
                        }
                        if (ItemInventory.isOpen)
                            ItemInventory.isOpen = false;
                    }
                }
                //Dropping/storing
                else if (items[selection].isPickedUp && Vector3.Distance(items[selection].transform.position, inventory.transform.position) < 0.5)
                {
                    if (pickupCorrected.IsPressed())
                    {
                        items[selection].isPickedUp = false;
                    }

                    HeadsUpDisplayController.Instance.DrawText("Store Item", 0, 0, Color.blue);
                    if (storeCorrected.IsPressed())
                    {
                        items[selection].isPickedUp = false;
                        ItemInventory.storeItem(items[selection]);
                    }
                }
                //Just dropping
                else if (pickupCorrected.IsPressed() && items[selection].isPickedUp)
                {
                    items[selection].isPickedUp = false;
                }
                //Prompt for picking up
                else if (!items[selection].isPickedUp)
                {
                    HeadsUpDisplayController.Instance.DrawText(items[selection].info, 0, -0.1f, Color.blue);
                    HeadsUpDisplayController.Instance.DrawText("Press (A) to " + (items[selection].isTakeable ? "Take" : "Pick up"), 0, 0.1f, Color.blue);
                }
            }
            else if (selection >= (items.Count))
            {
                if (interactCorrected.IsPressed() && !doors[selection - items.Count].isGrabbed)
                {
                    doors[selection - items.Count].isGrabbed = true;
                    doors[selection - items.Count].door.RequestUnlatch();
                    doors[selection - items.Count].grabbedDistance = Vector3.Distance(doors[selection - items.Count].transform.position, playerHead.transform.position);
                }
                else if ((interactCorrected.IsReleased() || (Vector3.Distance(playerHead.transform.position, doors[selection - items.Count].transform.position) > 3)) && doors[selection - items.Count].isGrabbed)
                {
                    doors[selection - items.Count].isGrabbed = false;
                    doors[selection - items.Count].door.RequestLatch();
                }

                if (doors[selection - items.Count].door.Locked)
                    HeadsUpDisplayController.Instance.DrawText("Locked -- Needs " + doors[selection - items.Count].door.adjColor.Name.ToUpper() + " Key", 0, 0, doors[selection - items.Count].door.adjColor.Color);
                else if (doors[selection - items.Count].isGrabbed)
                    HeadsUpDisplayController.Instance.DrawText("Turn to Move the Door",0,0,Color.blue);
                else if (!doors[selection - items.Count].isGrabbed)
                    HeadsUpDisplayController.Instance.DrawText("Hold (A) to Grab Handle",0,0,Color.blue);
                //Add more else ifs for more heads up displays if needed, I'm going to bed
            }
            else
            {
                //Inventory
                if (openInventory.IsPressed() && !ItemInventory.isOpen)
                {
                    ItemInventory.isOpen = true;
                }
                else if (openInventory.IsPressed() && ItemInventory.isOpen)
                {
                    ItemInventory.isOpen = false;
                }
                else if (!ItemInventory.isOpen && ItemInventory.objects.Count > 0)
                    HeadsUpDisplayController.Instance.DrawText("Press (A) to Open Inventory", 0, 0, Color.blue);
                else if (ItemInventory.isOpen)
                    HeadsUpDisplayController.Instance.DrawText("Press (A) to Close Inventory", 0, 0, Color.blue);
            }
        }
    }