public void OnEnter() { _lever = _player.GetCurrentLever(); _lever.Interact(); LeanTween.rotate(_player.gameObject, _lever.playerPos.rotation.eulerAngles, .25f); LeanTween.move(_player.gameObject, _lever.playerPos.position, .25f); _player.SetRightHandObj(_lever.playerHandPos); GameObject.FindObjectOfType <GameController>().ShowGeneralCamera(2f, .5f); LeanTween.value(0f, 1f, 1f).setOnComplete(() => { _player.InteractLever(null); }); }
void Update() { if (Input.GetKeyDown(KeyCode.E)) { Interactables inter = new Error(); switch (obj.tag) //for every type of interaction define what does the script do { case "Door": inter = new Door(); break; case "Lever": inter = new Lever(); break; //specify eveery class and define the code in the class } inter.Interact(obj); } }
public void Interact(InputAction.CallbackContext context) { Debug.Log("Interact was called" + owner.GetInteractablesInRange()); if (owner.GetInteractablesInRange().Count >= 1) { GameObject toInteract = owner.GetInteractablesInRange()[0]; if (toInteract != null) { Debug.Log("Going to interact with" + owner.GetInteractablesInRange()); Item isItem = toInteract.GetComponent <Item>(); if (isItem != null) { Debug.Log("Interacting with an item"); owner.GetInventory().AddItem(isItem.item, 1); Object.Destroy(toInteract); } else { NPC isNPC = toInteract.GetComponent <NPC>(); if (isNPC != null) { Debug.Log("Interacting with an NPC"); isNPC.Interact(owner); } Lever isLever = toInteract.GetComponent <Lever>(); if (isLever != null) { Debug.Log("Interacting with Lever"); isLever.Interact(); } } owner.RemoveInteractableInRange(toInteract); } } }