public void AddToMap(string mapName, InteractableObject.Parameters item) { if (!paramSet.ContainsKey(mapName)) { paramSet.Add(mapName, new List<InteractableObject.Parameters>()); } paramSet[mapName].Add(item); }
private void HandleCollisionEnter(GameObject _other) { if (_other.gameObject.GetComponent<InteractableObject>()) { //save the script of _other, in the variable interactableObject = _other.gameObject.GetComponent<InteractableObject>(); if (interactableObject.IsEnabled) { if (interactableObject.transform.CompareTag(Tags.shieldPowerUp)) { powerUpHandler.AddShield (); if(optionMusic) { audioSource.PlayOneShot(pickupClip); } } else if (interactableObject.transform.CompareTag(Tags.magnetPowerUp)) { powerUpHandler.AddMagnet (); if (optionMusic) { audioSource.PlayOneShot(pickupClip); } } //save the healthvalue of other float healthValue = interactableObject.HealthValue; //add the value to the healthbar if (healthValue < 0) { if(hurtable) { healthBar.addValue (healthValue); GetHitEffect(); } } else if (healthValue > 0) { //if the value is positive, increment score pickups.IncrementScore (); healthBar.addValue (healthValue); //only play water pickup sound when supermodeIsOn is false if (!healthBar.SuperModeIsOn && optionMusic) { audioSource.pitch = Random.Range(0.75F, 1.25F); audioSource.PlayOneShot(pickupClip); } } //let the _other object know that it has been touched so it can play its animation interactableObject.Touched (); } } }
public override void Use(PlayerCharacter by, InteractableObject target = null) { photonView.RPC("TurnOn", RpcTarget.All, !light.gameObject.activeSelf); }
private void Item_OnInteract(object sender, InteractEventArgs e) { switch (e.interactionType) { case InteractionType.DoNothing: break; case InteractionType.GoTo: /// Check if object has a requirement to intereact with if (e.inventoryItem != null) { /// Check if the item selected by the player is equal to the requierement if (e.inventoryItem.Length == 0 || e.inventoryItem[0] == normalInventory.UseItem) { //inventory.RemoveFromInventory(inventory.UseItem); Transform room; if (TryFindRoom(e.nextDoor, out room)) { ChangeRoom(room); } else { Debug.LogError($"There's no room index as {e.nextDoor}, please check name or add it on GameController"); return; } } } /// Go to different Room if the object has no requirements else { Transform room; if (TryFindRoom(e.nextDoor, out room)) { Debug.Log("CHANGE SCENE TO " + e.nextDoor); ChangeRoom(room); } else { Debug.LogError($"There's no room index as {e.nextDoor}, please check name or add it on GameController"); return; } } normalInventory.UseItem = null; break; case InteractionType.InventoryItem: ///HAZLO MEJOR PARA LA OTRA for (int i = 0; i < e.inventoryItem.Length; i++) { switch (e.inventoryItem[i].type) { case InventoryType.Item: if (normalInventory.AddToInventory(e.inventoryItem[i])) { InteractableObject interactable = (InteractableObject)sender; //Debug.Log($"THE ITEM {e.inventoryItem} has been added to you inventory"); Destroy(interactable.gameObject); } break; case InventoryType.ItemWithAudio: if (normalInventory.AddToInventory(e.inventoryItem[i])) { InteractableObject interactable = (InteractableObject)sender; SoundManager.Instance.VoiceController.Play(e.Audio); //Debug.Log($"THE ITEM {e.inventoryItem} has been added to you inventory"); Destroy(interactable.gameObject); } break; case InventoryType.Document: if (documentInventory.AddToInventory(e.inventoryItem[i])) { InteractableObject interactable = (InteractableObject)sender; //Debug.Log($"THE ITEM {e.inventoryItem} has been added to you inventory"); Destroy(interactable.gameObject); } break; case InventoryType.DocumentWithAudio: if (documentInventory.AddToInventory(e.inventoryItem[i])) { InteractableObject interactable = (InteractableObject)sender; SoundManager.Instance.VoiceController.Play(e.Audio); //Debug.Log($"THE ITEM {e.inventoryItem} has been added to you inventory"); Destroy(interactable.gameObject); } break; } } break; case InteractionType.Puzzle: /// We have only 1 puzzle so, no checking values here. PaddlePuzleController puzzle = (PaddlePuzleController)sender; if (puzzle == null) { return; } currentPuzzle = puzzle; // Check if the inventory contain the puzzle requirements // if so, delete requirements from puzzle and objects from inventory if (currentPuzzle.requirements != null && currentPuzzle.requirements.Length > 0) { InventoryItemModel[] requirements = new InventoryItemModel[puzzle.requirements.Length]; for (int i = 0; i < puzzle.requirements.Length; i++) { requirements[i] = normalInventory.FindByItemName(puzzle.requirements[i].itemName); if (requirements[i] == null) { DisplayText("No Cumples con los Requisitos"); return; } } puzzle.requirements = null; //for(int i = 0; i < requirements.Length; i++) //{ // inventory.RemoveFromInventory(requirements[i]); //} requirements = null; } /// Open the puzzle currentPuzzle.GetComponent <Collider2D>().enabled = false; currentPuzzle.OnPuzzleConfirm += Puzzle_OnPuzzleConfirm; currentPuzzle.OnPuzzleClose += Puzzle_OnPuzzleClose; currentPuzzle.Display(); break; case InteractionType.Victory: Victory(); break; } }
public void AddInteractableObjectListener(InteractableObject item) { item.OnInteract += Item_OnInteract; }
public EquipSlots(InteractableObject equipObject, string equipSlotName) { this.EquipObject = equipObject; this.EquipSlotName = equipSlotName; }
void OnTriggerStay(Collider other) { if(other.isTrigger == false) { if (other.tag == Tags.interactable) { targetedInteractible = other.GetComponent<InteractableObject>(); //TODO: Trigger a graphical effect for the highlighted object } } }
//Setup before going into this state. Called by another state public void Setup(PlayerState state, InteractableObject interactable) { this.dialogue = interactable.GetCorrespondingDialogue(); Debug.Log("Setup: " + this.dialogue.sentences[0]); this.prevState = state; }
// Determines the event upon gameobject selection public void PerformEvent(GameObject gameObject) { Debug.Log("Event Manager Logic"); // Check if object is interactable InteractableObject obj = gameObject.GetComponent(typeof(InteractableObject)) as InteractableObject; if (obj != null) // Object is interactable { if (obj.canPickUp) // Object is pickupable { if (!player.HasItem(obj)) // Player does not have the item // Pick up the item and add to inventory { player.PickUpItem(obj); // Make gameobject disappear from scene UnityEngine.Object.Destroy(gameObject); } else // Player already has the item { Debug.Log("Player already has an item of this type. Something went wrong!"); } } else // Cannot pick up object // Object types are enumerated in InteractableScript.cs { switch (obj.type) { case ObjectType.TeddyBear: OpenableObject teddy = gameObject.GetComponent(typeof(OpenableObject)) as OpenableObject; if (!teddy.isOpen) { if (!ReferenceEquals(player.itemHeld, null)) // Player is holding an item { if (player.itemHeld.type == ObjectType.Scissors) { Debug.Log("Teddy RIPPED APART"); // TODO!! // Change teddy sprite with teddy.openSprite // Unlock vent and open it teddy.isOpen = true; // Remove scissors from player inventory player.RemoveItem(player.itemHeld); // FIND ITEM IN TEDDY BEAR? Add USB to scene?? } else { Debug.Log("Incorrect item used on teddy bear"); // TODO -- Popup telling user that he or she is a dumbass using the wrong item } } else // Player is not holding an item { Debug.Log("Teddy Bear clicked with no item"); // TODO -- popup telling user that it needs something to open or something } } break; case ObjectType.Bed: Debug.Log("Bed Clicked"); // Bed itself is uninteresting; nothing happens break; // EXAMPLE!!! case ObjectType.Vent: Debug.Log("Vent Clicked"); // Vent is an openable object and should have the the openable object script; if not TODO!! (throw error) OpenableObject vent = gameObject.GetComponent(typeof(OpenableObject)) as OpenableObject; if (!vent.isOpen) { if (!ReferenceEquals(player.itemHeld, null)) // Player is holding an item { if (player.itemHeld.type == ObjectType.Screwdriver) { Debug.Log("Vent Unhinged"); // Change vent sprite vent.ChangeSprite(vent.openedSprite); // Unlock vent and open it vent.isOpen = true; // Remove screwdriver from player inventory player.RemoveItem(player.itemHeld); // Make matches visible GameObject matches = ObjectDB.Instance.GetObject(ObjectType.Matches); if (matches == null) { Debug.Log("Error; matches not on scene"); return; } matches.SetActive(true); } else { Debug.Log("Incorrect item used on vent"); // TODO -- Popup telling user that he or she is a dumbass using the wrong item } } else // Player is not holding an item { Debug.Log("Vent clicked with no item"); // TODO -- popup telling user that it needs something to open or something } } else // Vent is already unlocked { Debug.Log("Vent already open"); // If item is in the vent... it should be able to handle itself being clicked // DO NOTHING } break; case ObjectType.DeskDrawer: Debug.Log("DeskDrawer Clicked"); OpenableObject deskDrawer = gameObject.GetComponent(typeof(OpenableObject)) as OpenableObject; if (!deskDrawer.isOpen) { Debug.Log("Drawer opened"); deskDrawer.isOpen = true; // TODO change sprite } else { Debug.Log("Drawer closed"); deskDrawer.isOpen = false; // TODO change sprite } break; case ObjectType.Computer: Debug.Log("Computer Clicked"); // todo break; case ObjectType.DeskDrawer1: Debug.Log("DeskDrawer1 Clicked"); OpenableObject deskDrawer1 = gameObject.GetComponent(typeof(OpenableObject)) as OpenableObject; if (!deskDrawer1.isOpen) { Debug.Log("Drawer1 opened"); deskDrawer1.isOpen = true; // TODO change sprite } else { Debug.Log("Drawer1 closed"); deskDrawer1.isOpen = false; // TODO change sprite } break; case ObjectType.DeskDrawer2: Debug.Log("DeskDrawer2 Clicked"); OpenableObject deskDrawer2 = gameObject.GetComponent(typeof(OpenableObject)) as OpenableObject; if (!deskDrawer2.isOpen) { Debug.Log("Drawer2 opened"); deskDrawer2.isOpen = true; // TODO change sprite } else { Debug.Log("Drawer2 closed"); deskDrawer2.isOpen = false; // TODO change sprite } break; case ObjectType.DeskDrawer3: Debug.Log("DeskDrawer3 Clicked"); // TODO --- lock on the deskdrawer itself break; case ObjectType.Trunk: Debug.Log("Trunk Clicked"); LockableObject trunk = gameObject.GetComponent(typeof(LockableObject)) as LockableObject; if (trunk.isLocked) { if (!ReferenceEquals(player.itemHeld, null)) // Player is holding an item { if (player.itemHeld.type == ObjectType.TrunkKey) { Debug.Log("Trunk unlocked"); // TODO!! Potentially change sprite // Unlock trunk trunk.isLocked = false; // Remove trunk key from inventory player.RemoveItem(player.itemHeld); } else { Debug.Log("Incorrect item used on trunk"); // TODO -- Popup telling user that he or she is a dumbass using the wrong item } } else // Player is not holding an item { Debug.Log("Trunk clicked with no item"); // TODO -- popup telling user that it needs something to open or something } } else { // Normal drawer opening stuff if (!trunk.isOpen) { Debug.Log("Trunk opened"); trunk.isOpen = true; // TODO change sprite } else { Debug.Log("Trunk closed"); trunk.isOpen = false; // TODO change sprite } } break; case ObjectType.ExitDoor: Debug.Log("Exit Door Clicked"); LockableObject exitDoor = gameObject.GetComponent(typeof(LockableObject)) as LockableObject; if (player.itemHeld.type == ObjectType.KeyCard) { Debug.Log("Unlocked exit door"); // WIN GAME LMAO } else { Debug.Log("Exit Door clicked (not correct item or no item at all)"); } break; case ObjectType.Nightstand: Debug.Log("NightStand Clicked"); LockableObject nightstand = gameObject.GetComponent(typeof(LockableObject)) as LockableObject; if (nightstand.isLocked) { if (!ReferenceEquals(player.itemHeld, null)) // Player is holding an item { if (player.itemHeld.type == ObjectType.NightstandKey) { Debug.Log("Nightstand unlocked"); // TODO!! Potentially change sprite // Unlock nightstand nightstand.isLocked = false; // Remove nightstand key from inventory player.RemoveItem(player.itemHeld); } else { Debug.Log("Incorrect item used on nightstand"); // TODO -- Popup telling user that he or she is a dumbass using the wrong item } } else // Player is not holding an item { Debug.Log("Nightstand clicked with no item"); // TODO -- popup telling user that it needs something to open or something } } else { // Normal nightstand opening stuff if (!nightstand.isOpen) { Debug.Log("Drawer3 opened"); nightstand.isOpen = true; // TODO change sprite } else { Debug.Log("Drawer3 closed"); nightstand.isOpen = false; // TODO change sprite } } break; case ObjectType.Plant: Debug.Log("Plant Clicked"); // TODO break; case ObjectType.Candle: Debug.Log("Candle Clicked"); MeltableObject candle = gameObject.GetComponent(typeof(MeltableObject)) as MeltableObject; if (!candle.isMelted) { if (!ReferenceEquals(player.itemHeld, null)) // Player is holding an item { if (player.itemHeld.type == ObjectType.Matches) { Debug.Log("Candle melted"); // TODO!! change sprite // Unlock deskDrawer candle.isMelted = true; // Remove matches from inventory player.RemoveItem(player.itemHeld); } else { Debug.Log("Incorrect item used on candle"); // TODO -- Popup telling user that he or she is a dumbass using the wrong item } } else // Player is not holding an item { Debug.Log("Candle clicked with no item"); // TODO -- popup telling user that it needs something to open or something } } else { Debug.Log("Candle already melted"); // DO NOTHING } break; default: Debug.Log("No code for item clicked. Ensure that if the item is clickable, its bool for clickable is TRUE"); break; } } } else { Debug.Log("Non-interactable game object clicked."); } }
/* public void AddQuest(Quest q) { AddQuest(q.NPC_ID, q.dialogue_in_progress, q.dialogue_change, q.requirement, q.changeBool, q.required_item, q.questName); PlayerData pl = GameManager.instance.playerData; pl.RegisterQuest(q.questName); } */ public void CheckQuest(InteractableObject obj) { //Debug.Log(Qlist.Count); // Iterate thorugh all the quests in the quest list for (int i = 0; i < Qlist.Count; i++) { QClass temp = (QClass)Qlist[i]; bool correctTime = false; for (int j = 0; j < temp.timeBlocks.Count; j++ ) { if(temp.timeBlocks[j] == 0) { correctTime=true; } if(temp.timeBlocks[j] == GameManager.instance.GetTimeAsInt()) { correctTime=true; } } if (obj.iD == temp.NPC && correctTime) { PlayerData pl = GameManager.instance.playerData; if (temp.completed) { // IF the quest is already finished in a scene // This should be redundant } else if (pl.CheckQuest(temp.questName)) { // If the player data says the quest is finished, do nothing } else { InteractableObject io = obj.GetComponent<InteractableObject>(); DayData dd = GameManager.instance.dayData; //If the requirement is not yet registered pl.RegisterData(temp.requirement); // If requirements are met if (pl.GetBool(temp.requirement)) { // Trigger the quest if (temp.triggered == false) { temp.triggered = true; break; } else { Debug.Log("Dialogue in progress"); // io.dialogueIDSingle = temp.dialogue_in_progress; } if (temp.itemTurnedIn == false) { for (int j = 0; j < GameManager.instance.dayData.ItemAmount; j++) { if (GameManager.instance.dayData.Inventory[j] == null) { } else if (GameManager.instance.dayData.Inventory[j].Name == temp.requiredItem) { Debug.Log("Have Item"); GameManager.instance.dayData.Inventory[j] = null; GameManager.instance.dayData.ItemAmount--; temp.itemTurnedIn = true; break; } } } } if (temp.itemTurnedIn) { io.dialogueIDSingle = temp.dialogue_change; pl.SetBool(temp.changeBool); pl.FinishQuest(temp.questName); temp.completed = true; Debug.Log("QuestCompleted"); if (temp.questName == "ReturnDogToRae") { Application.LoadLevel("Outcome_Screen"); } } } } } }
public void SetInteractionObject(InteractableObject interactionObject) { InteractionObject = interactionObject; CanInteract = InteractionObject != null; }
// Start is called before the first frame update void Start() { _target = null; }
protected override void OnUpdate() { if (slashDuration > 0) { slashDuration -= Time.deltaTime; } else { if (slashDuration < 0) { ManagesPlayer.instance.getAnimator().SetBool("slash", false); walkDelay = ManagesPlayer.instance.settings.afterAttackFreeze; } slashDuration = 0; } if (slashDuration > 0 && attackCheckDelay == 0) { int count = ManagesPlayer.instance.getHitBox().Cast(Vector2.zero, attackContactFilter, attackHitBuffer); for (int i = 0; i < count; i++) { if (attackHitBuffer[i].transform.gameObject.layer == 14) { InteractableObject interaction = attackHitBuffer[i].transform.gameObject.GetComponent <InteractableObject>(); if (interaction != null) { interaction.hit(); } } } } if (attackCheckDelay > 0) { attackCheckDelay -= Time.deltaTime; } else { attackCheckDelay = 0; } if (walkDelay > 0) { walkDelay -= Time.deltaTime; } else { walkDelay = 0; } if (ManagesPlayer.instance.transformed() && ManagesPlayer.instance.isAlive()) { if (slashDuration == 0 && Input.GetAxis("Attack") > 0) { ParticleSystem.ShapeModule shape = ManagesPlayer.instance.getIllness().shape; if (ManagesPlayer.instance.values.illness == 1) { shape.randomPositionAmount = 1; } else if (ManagesPlayer.instance.values.illness == 2) { shape.randomPositionAmount = 1.2f; } else if (ManagesPlayer.instance.values.illness == 3) { shape.randomPositionAmount = 1.5f; } else if (ManagesPlayer.instance.values.illness == 4) { shape.randomPositionAmount = 2; } walkDelay = 0; ManagesPlayer.instance.getHitBox().transform.position = this.transform.position; int currentSlash = ManagesPlayer.instance.settings.currentSlash; ManagesPlayer.instance.getAnimator().SetBool("slash", true); ManagesPlayer.instance.getAnimator().SetInteger("slashType", currentSlash); if (currentSlash == 0) { ManagesGame.instance.playSound(ManagesGame.instance.slash_2, 0.4f); } else { ManagesGame.instance.playSound(ManagesGame.instance.slash_3, 0.4f); } slashDuration = 0; slashDuration += ManagesPlayer.instance.settings.slashDuration[currentSlash]; attackCheckDelay = slashDuration / 4; if (currentSlash + 1 < ManagesPlayer.instance.settings.slashDuration.Length) { ManagesPlayer.instance.settings.currentSlash++; } else { ManagesPlayer.instance.settings.currentSlash = 0; } } } }
private void LoadParameters(InteractableObject IO, InteractableObject.Parameters parameter) { //InteractableObject io = npc.interactableObject.GetComponent<InteractableObject>(); IO.dialogueIDType = parameter.dialogueIDType; IO.dialogueIDSingle = parameter.dialogueIDSingle; IO.dialogueIDMin = parameter.dialogueIDMin; IO.dialogueIDMax = parameter.dialogueIDMax; IO.dialogueIDMulti = parameter.dialogueIDMulti; NPC npc = IO.transform.GetComponent<NPC>(); if (npc != null) { npc.characterAnimations.AnimationState = parameter.startingAnimationState; npc.characterAnimations.animationSpeed = parameter.animationSpeed; npc.wanderDistanceX = parameter.wanderDistanceX; npc.wanderDirectionX = parameter.wanderDirectionX; npc.wanderDistanceY = parameter.wanderDistanceY; npc.wanderDirectionY = parameter.wanderDirectionY; npc.speed = parameter.speed; if (!parameter.turnOnInteract) { npc.characterAnimations.facePlayerOnInteraction = false; } } }
// Use this for initialization void Start() { myInteraction = GetComponent <InteractableObject> (); }
void OnTriggerExit(Collider other) { interactableObject = null; }
void InteractWithObj(GameObject _targetObj, InteractableObject _targetType) { switch (_targetType) { case InteractableObject.Door: // This gets the Door Trigger, who is a child of the actual door. avatarNetBhvr.CmdDoor(_targetObj.transform.parent.gameObject); break; case InteractableObject.Player: if (GetComponent<AvatarController>().isHidden) break; if (_targetObj.GetComponent<AvatarController>().Disabled) { Debug.Log("Revive!"); // If player is disabled revive. Amount is rounded down int ReviveAmount = Mathf.FloorToInt(_targetObj.GetComponent<Health>().BaseHealth * ReviveHealPrcnt); avatarNetBhvr.CmdAssignDamage(_targetObj, -ReviveAmount); } break; case InteractableObject.Light: if (GetComponent<AvatarController>().isHidden) break; // Get light component var lightScr = _targetObj.GetComponent<LightController>(); if (lightScr == null) { Debug.Log("Light does no have LightController script"); break; } // Change light status acordingly if (lightScr.CurrentStatus == LightController.LightStatus.On) { avatarNetBhvr.CmdChangeLightStatus(lightScr.gameObject, LightController.LightStatus.Dimmed); } else if ((lightScr.CurrentStatus == LightController.LightStatus.Dimmed) || lightScr.CurrentStatus == LightController.LightStatus.Off) { avatarNetBhvr.CmdChangeLightStatus(lightScr.gameObject, LightController.LightStatus.On); } break; case InteractableObject.HidingSpot: Debug.Log("Interacting with a HidingSpot!"); var hideObj = Physics2D.OverlapCircle(transform.position, 3, 1 << LayerMask.NameToLayer("HideSpot")); if (hideObj != null && !hideObj.GetComponentInParent<HidingSpot>().isOccupied && !isHiding) { isHiding = true; //hideObj.GetComponentInParent<HidingSpot>().CmdSetOccupiedStatus(true); //hide the explorer in all views avatarNetBhvr.CmdHideExplorer(gameObject, hideObj.transform.parent.gameObject); break; } if (isHiding) { isHiding = false; //hideObj.GetComponentInParent<HidingSpot>().CmdSetOccupiedStatus(false); //show the explorer in all views avatarNetBhvr.CmdShowExplorer(gameObject, hideObj.transform.parent.gameObject); } break; case InteractableObject.Goal: if (GetComponent<AvatarController>().isHidden) break; Debug.Log("Interacting with a Goal!"); break; default: break; } }
public override void SetParent(InteractableObject _parent) { base.SetParent(_parent); }
public void SetObj(InteractableObject obj) { this.obj = obj; }
void Update() { if (controller == null) { Debug.Log("Controller not initialized"); return; } if (Jump) { if (controller.GetPressUp(touchPad)) { /* * Vector2 dir = controller.GetAxis(); * float rotation = -head.GetComponent<Transform>().rotation.eulerAngles.y; * float sin = Mathf.Sin(rotation * Mathf.Deg2Rad); * float cos = Mathf.Cos(rotation * Mathf.Deg2Rad); * float tx = dir.x; * float ty = dir.y; * * dir.x = (cos * tx) - (sin * ty); * dir.y = (sin * tx) + (cos * ty); * * if (dir.x < -0.2) * { * if (dir.y < -0.2) * cam2.Move("Backward and Left"); * else if (dir.y > 0.2) * cam2.Move("Forward and Left"); * else * cam2.Move("Left"); * * } * else if (dir.x > 0.2) * { * if (dir.y < -0.2) * cam2.Move("Backward and Right"); * else if (dir.y > 0.2) * cam2.Move("Forward and Right"); * else * cam2.Move("Right"); * * } * else * { * if (dir.y < -0.2) * cam2.Move("Backward"); * else if (dir.y > 0.2) * cam2.Move("Forward"); * * } */ } } else { if (controller.GetTouch(touchPad)) { /* * Vector2 dir = controller.GetAxis(); * float rotation = -head.GetComponent<Transform>().rotation.eulerAngles.y; * float sin = Mathf.Sin(rotation * Mathf.Deg2Rad); * float cos = Mathf.Cos(rotation * Mathf.Deg2Rad); * float tx = dir.x; * float ty = dir.y; * * dir.x = (cos * tx) - (sin * ty); * dir.y = (sin * tx) + (cos * ty); * * if (dir.x < -0.2) * { * if (dir.y < -0.2) * cam.Move("Backward and Left"); * else if (dir.y > 0.2) * cam.Move("Forward and Left"); * else * cam.Move("Left"); * * } * else if (dir.x > 0.2) * { * if (dir.y < -0.2) * cam.Move("Backward and Right"); * else if (dir.y > 0.2) * cam.Move("Forward and Right"); * else * cam.Move("Right"); * * } * else * { * if (dir.y < -0.2) * cam.Move("Backward"); * else if (dir.y > 0.2) * cam.Move("Forward"); * * } */ } } if (controller.GetPressDown(triggerButton)) { Debug.Log("trigger"); /* * if (pickUp) * { * interacting.SetActive(false); * PlayerController.count++; * } */ float minDistance = float.MaxValue; float distance; foreach (InteractableObject item in objectsHoveringOver) { distance = (item.transform.position - transform.position).sqrMagnitude; if (distance < minDistance) { minDistance = distance; closestObject = item; } } interactingObject = closestObject; closestObject = null; if (interactingObject) { if (interactingObject.IsInteracting()) { Debug.Log("Special Dropped"); interactingObject.EndInteraction(this); } Debug.Log("Grabbed"); interactingObject.BeginInteraction(this); } } if (controller.GetPressUp(triggerButton) && interactingObject != null) { Debug.Log("Dropped"); interactingObject.EndInteraction(this); } if (controller.GetPressDown(gripButton) && (Data.crouched == Data.UNCROUCHED)) { //player.GetComponent<Transform>().Translate(new Vector3(0, -100, 0) * Time.deltaTime); Vector3 temp = player.GetComponent <Transform>().position; temp.y = (temp.y - 50) * Time.deltaTime; player.GetComponent <Transform>().position = temp; Data.crouched = Data.CROUCHED; } if (controller.GetPressUp(gripButton) && (Data.crouched == Data.CROUCHED)) { //player.GetComponent<Transform>().Translate(new Vector3(0, 100, 0) * Time.deltaTime); Vector3 temp = player.GetComponent <Transform>().position; temp.y = (temp.y + 50) * Time.deltaTime; player.GetComponent <Transform>().position = temp; Data.crouched = Data.UNCROUCHED; } }
void Use(InteractableObject iObj) { iObj.Use(); }
public InteractableObjectMapCell(InteractableObject interactableObject) { InteractableObject = interactableObject; }
/// <summary> /// Resetea las varibles del comportamiento del monje (llamar al terminar comportamientos) /// </summary> public void ResetBehaviourVars() { _currentCoroutine = null; _currentOrderGO = null; _currentOrderGOComponent = null; }
public string Talk(InteractableObject item) { return("I can't talk with that"); }
void Start() { touchedObject = null; }
public void InfoDetails(InteractableObject interactableFromScene) { print(interactableFromScene.interactions[0]); }
public void RemoveInteractableObjectListener(InteractableObject item) { item.OnInteract -= Item_OnInteract; }
public void UseItem(InteractableObject interactableFromScene) { print(interactableFromScene.interactions[1]); }
public void SetObj(InteractableObject obj) { this.obj = obj; }
public void TakeObject(InteractableObject interactableFromScene) { print(interactableFromScene.interactions[2]); }
protected override void Interact(InteractableObject hitObject) { base.Interact(hitObject); PlaySound(hitObject); animator.SetTrigger("enemyAttack"); }
public static void AddInteractableObject(InteractableObject @object) { _interactableObjects.Add(@object); }
protected void OnHit(RaycastHit hitInfo, InteractableObject interactable) { UpdateHighlight(interactable); if (IsClickDown()) { interacting = interactable.OnInteract(this); if (interacting) { interactingObject = interactable; interactable.OffHighlight(this); // Dehighlight the object when it's interacted with highlightedObject = null; } } }
protected void UpdateHighlight(InteractableObject interactable) { if (interactable == null) // DeHighlight when not pointing at an object { if (highlightedObject != null) { highlightedObject.OffHighlight(this); highlightedObject = null; } } else if (!interactable.Equals(highlightedObject)) { if (highlightedObject != null) { highlightedObject.OffHighlight(this); } highlightedObject = interactable; highlightedObject.OnHighlight(this); } }
private void OnTriggerEnter(Collider other) { interactableObject = other.GetComponent <InteractableObject>(); }
// Start is called before the first frame update void Start() { interactionHolder = this.gameObject.GetComponent <InteractableObject>(); // set the interactionHolder numTriggers = 0; }
void Awake() { InteractPlayer.OnChange += HitEvent; interact = gameObject.GetComponent<InteractableObject>(); interact.Complete += InteractableComplete; }
public void playerTakeItem(InteractableObject item) { playerStats.AddStatBonusWhenTake(item.stats); }
// Update is called once per frame void Update() { /* * Capturing of the Camera */ if (_captureCursor) { Screen.lockCursor = true; for (int i = 0; i < mouseLooks.Length; i++) mouseLooks[i].enabled = Screen.lockCursor; } else { Screen.lockCursor = false; for (int i = 0; i < mouseLooks.Length; i++) mouseLooks[i].enabled = false; } /* * Sense Controls */ if (Input.GetButtonDown("Toggle Slot")) { currentSlot = (currentSlot == 1)? 0 : 1; WorldAudioManager.Instance.PlaySwitchSlotSense(); } if (Input.GetButtonDown("Sight")) { SetSenseToCurrentSlot(SenseController.SenseType.Sight); } if (Input.GetButtonDown("Hearing")) { SetSenseToCurrentSlot(SenseController.SenseType.Hearing); } if (Input.GetButtonDown("Scent")) { SetSenseToCurrentSlot(SenseController.SenseType.Scent); } if (Input.GetButtonDown("Feeling")) { SetSenseToCurrentSlot(SenseController.SenseType.Feeling); } if(Input.GetButtonDown("Reset Game")) { Application.LoadLevel(0); } if (Input.GetButtonDown("Reset Level")) { Application.LoadLevel(Application.loadedLevel); } if (Input.GetButtonDown("Interaction")) { if(IsSenseActive(SenseController.SenseType.Feeling)) { if (isCarrying) { isCarrying = false; } RaycastHit hit; Transform sightCamera = transform.root.FindChild("SenseGroup").FindChild("SightCamera"); //Debug.DrawRay(sightCamera.position, sightCamera.TransformDirection(Vector3.forward)); if(carryingObject == null) { //Debug.DrawRay(sightCamera.position, sightCamera.TransformDirection(Vector3.forward)); if(Physics.Raycast(sightCamera.transform.position, sightCamera.transform.TransformDirection(Vector3.forward), out hit, 2)) { carryingObject = hit.transform.root.gameObject.GetComponentInChildren<InteractableObject>(); if (carryingObject != null) { if(carryingObject.canCarry) { if(carryingObject != null) { isCarrying = !isCarrying; carryingObject.transform.parent = PlayerController.Instance.transform; carryingObject.collider.enabled = false; carryingObject.rigidbody.useGravity = false; Debug.Log ("hurrdurr"); } } else if(carryingObject.canActivate) { carryingObject.activate(); } } } } else if (!isCarrying){ Debug.Log ("drop"); //carryingObject.rigidbody.useGravity = true; if(carryingObject != null) { carryingObject.collider.enabled = true; carryingObject.rigidbody.useGravity = true; carryingObject.transform.parent = null; carryingObject.rigidbody.WakeUp(); carryingObject = null; } else { Debug.Log("YIURSD"); } } } } RaycastHit echoHit = new RaycastHit(); if(Application.HasUserAuthorization(UserAuthorization.Microphone) || !Application.isWebPlayer) { if(Input.GetButtonDown("Shout")) { if(IsSenseActive(SenseController.SenseType.Hearing)) { Transform sightCamera = transform.root.FindChild("SenseGroup").FindChild("SightCamera"); Physics.Raycast(sightCamera.position, sightCamera.TransformDirection(Vector3.forward), out echoHit, 100f); echoDistance = echoHit.distance; audio.clip = Microphone.Start("", false, 99, AudioSettings.outputSampleRate); } } if(Input.GetButtonUp("Shout")) { if(IsSenseActive(SenseController.SenseType.Hearing)) { Microphone.End(""); Debug.Log(echoDistance); voiceClip = AudioClip.Create("MyVoice", 44100, 1, 44100, true, false); AudioEchoFilter echoFilter = GameObject.Find("Player").GetComponentInChildren<AudioEchoFilter>(); if(echoDistance >= 10f && echoDistance <= 15f) { echoFilter.enabled = true; echoFilter.wetMix = 0.1f; echoFilter.decayRatio = 0.1f; } else if(echoDistance > 15f && echoDistance <= 20f) { echoFilter.enabled = true; echoFilter.wetMix = 0.1f; echoFilter.decayRatio = 0.4f; } else if(echoDistance > 20f) { echoFilter.enabled = true; echoFilter.wetMix = 0.1f; echoFilter.decayRatio = 0.75f; } else { echoFilter.enabled = false; } float[] samples = new float[44100]; audio.clip.GetData(samples, 0); voiceClip.SetData(samples, 0); audio.clip = voiceClip; audio.PlayOneShot(voiceClip); echoDistance = 0f; } } } if (!killed) { _checkDeath(); } }
// Update is called once per frame void Update() { Vector3 pos = transform.position; if (m_IsKO) { m_KOTimer += Time.deltaTime; if (m_KOTimer > 3.0f) { GoToRespawn(); } return; } //The update need to run, so we can check the health here. //Another method would be to add a callback in the CharacterData that get called //when health reach 0, and this class register to the callback in Start //(see CharacterData.OnDamage for an example) if (m_CharacterData.Stats.CurrentHealth == 0) { m_Animator.SetTrigger(m_FaintParamID); m_Agent.isStopped = true; m_Agent.ResetPath(); m_IsKO = true; m_KOTimer = 0.0f; Data.Death(); m_CharacterAudio.Death(pos); return; } Ray screenRay = CameraController.Instance.GameplayCamera.ScreenPointToRay(Input.mousePosition); if (m_TargetInteractable != null) { CheckInteractableRange(); } if (m_CurrentTargetCharacterData != null) { if (m_CurrentTargetCharacterData.Stats.CurrentHealth == 0) { m_CurrentTargetCharacterData = null; } else { CheckAttack(); } } float mouseWheel = Input.GetAxis("Mouse ScrollWheel"); if (!Mathf.Approximately(mouseWheel, 0.0f)) { Vector3 view = m_MainCamera.ScreenToViewportPoint(Input.mousePosition); if (view.x > 0f && view.x < 1f && view.y > 0f && view.y < 1f) { CameraController.Instance.Zoom(-mouseWheel * Time.deltaTime * 20.0f); } } if (Input.GetMouseButtonDown(0)) { //if we click the mouse button, we clear any previously et targets if (m_CurrentState != State.ATTACKING) { m_CurrentTargetCharacterData = null; m_TargetInteractable = null; } else { m_ClearPostAttack = true; } } if (!EventSystem.current.IsPointerOverGameObject() && m_CurrentState != State.ATTACKING) { //Raycast to find object currently under the mouse cursor ObjectsRaycasts(screenRay); if (Input.GetMouseButton(0)) { if (m_TargetInteractable == null && m_CurrentTargetCharacterData == null) { InteractableObject obj = m_Highlighted as InteractableObject; if (obj) { InteractWith(obj); } else { CharacterData data = m_Highlighted as CharacterData; if (data != null) { m_CurrentTargetCharacterData = data; } else { MoveCheck(screenRay); } } } } } m_Animator.SetFloat(m_SpeedParamID, m_Agent.velocity.magnitude / m_Agent.speed); //Keyboard shortcuts if (Input.GetKeyUp(KeyCode.I)) { UISystem.Instance.ToggleInventory(); } }
void OnTriggerExit(Collider other) { if (hauntingObject == false) { if (other.tag == Tags.interactable) { targetedInteractible = null; } } }
private void Start() { interactable = GetComponent <InteractableObject>(); anim = GetComponent <Animator>(); interactable.OnInteract += Interactable_OnInteract; }
public void Use(InteractableObject iObj) { iObj.Use(); //Play Use Animation }
public void SetOpenPanelObject(InteractableObject panelObject) { m_OpenPanelObject = panelObject; }
private void ScareAgent(InteractableObject hauntedObject) { int addedFear = hauntedObject.ScareNPC(this); fearLevel += addedFear; panicLevel += addedFear; player.GetComponent<Interaction>().influence += addedFear; spooked = true; if(panicLevel < MaxPanicLevel) { LookAt(hauntedObject.transform.position); } }
public void RemoveInteractableObject(InteractableObject objectToRemove) { objectToRemove.infoPanel.SetActive(false); this.interactableObjectsInRange.Remove(objectToRemove); }
/// <summary> /// Avisa al monje de que se debe completar su peticion /// </summary> /// <param name="resultGO"> Objeto que se pasa al monje para la mision </param> public void CompleteRequest(GameObject resultGO) { // Detenemos el comportamiento actual StopCoroutine(_currentCoroutine); //Si estamos en el primer tunro if (_orderIndex == -1) { Debug.Log("[MonkRequest::MonkBehaviour] Completando peticion: CORRECTO!"); FMODManager.SINGLETON.PlayOneShot(FMODManager.Sounds.RequestSuccess); GameManager.SINGLETON.OrderCompleted(true, _orderIndex); return; } // Comprobamos resultado if(_currentOrderGO!=null && _currentOrderGO == resultGO) { // Correcto Debug.Log("[MonkRequest::MonkBehaviour] Completando peticion: CORRECTO!"); FMODManager.SINGLETON.PlayOneShot(FMODManager.Sounds.RequestSuccess); GameManager.SINGLETON.OrderCompleted(true, _orderIndex); bubble.DisableBubble(); GameManager.SINGLETON.player.thinkingBubble.SetActive(false); ResetBehaviourVars(); _currentOrderGOComponent = null; } else if(_currentOrderGOComponent == null) { // Incorrecto Debug.Log("[MonkRequest::MonkBehaviour] Completando peticion: FALLO!"); FMODManager.SINGLETON.PlayOneShot(FMODManager.Sounds.RequestFail); GameManager.SINGLETON.OrderCompleted(false, _orderIndex); GameManager.SINGLETON.BadRequestedReceived(); bubble.DisableBubble(); GameManager.SINGLETON.player.thinkingBubble.SetActive(false); ResetBehaviourVars(); } }
private void Interact(InteractableObject target) { target.Interact (); }