コード例 #1
0
    private void Update()
    {
        RaycastHit         hit;
        InteractableObject interactableObject = null;

        //if the player is looking at an interactable object
        if (Physics.Raycast(playerCamera.position, playerCamera.forward, out hit, range, interactableLayer))
        {
            interactableObject = hit.collider.gameObject.GetComponent <InteractableObject>();

            if (interactableObject != null)
            {
                interactionText.text = interactableObject.GetInteractionText();
            }
            else
            {
                interactionText.text = "";
            }
        }
        else
        {
            interactionText.text = "";
        }

        if (Input.GetButtonDown("Fire2") && interactableObject != null)
        {
            interactableObject.Activate();
        }
    }
コード例 #2
0
 public void Interaction(InputAction.CallbackContext ctx)
 {
     // gameObject.scene.IsValid check is necessary due to a bug in InputSystem: http://answers.unity.com/answers/1762099/view.html
     if (ctx.performed && gameObject.scene.IsValid())
     {
         if (availableWeaponSlot && availableWeaponSlot.AvailableForInteraction)
         {
             isInteractingWithWeapon = !isInteractingWithWeapon;
             availableWeaponSlot.SetPlayerInteraction(isInteractingWithWeapon);
         }
         else if (availableInteractableObject)
         {
             availableInteractableObject.Activate();
         }
     }
 }
 private void Update()
 {
     if (isMoving)
     {
         if (moveForward)
         {
             if (slerpValue >= 1)
             {
                 Debug.Log("made it");
                 isMoving    = false;
                 moveForward = false;
                 io.Activate();
                 backButton.enabled = true;
                 slerpValue         = 0;
             }
             else
             {
                 slerpValue = (currentTime - startTime) / duration;
                 controledCamera.transform.position = Vector3.Slerp(originalPosistion, cameraPosition.transform.position, slerpValue);
                 controledCamera.transform.rotation = Quaternion.Slerp(originalDirection, cameraPosition.transform.rotation, slerpValue);
                 currentTime += Time.deltaTime;
             }
         }
         else
         {
             if (slerpValue >= 1)
             {
                 isMoving                = false;
                 moveForward             = true;
                 playerCamera.enabled    = true;
                 controledCamera.enabled = false;
                 disableUI.SetActive(true);
                 slerpValue = 0;
             }
             else
             {
                 slerpValue = (currentTime - startTime) / duration;
                 controledCamera.transform.position = Vector3.Slerp(cameraPosition.transform.position, originalPosistion, slerpValue);
                 controledCamera.transform.rotation = Quaternion.Slerp(cameraPosition.transform.rotation, originalDirection, slerpValue);
                 currentTime += Time.deltaTime;
             }
         }
     }
 }
コード例 #4
0
 private void InteractWithObject(GameObject interactableObject)
 {
     _interactableObject = interactableObject.GetComponent <InteractableObject>();
     _interactableObject.Activate(transform.position);
 }