public InteractableTrigger(InteractableTrigger value) { InteractableToTrigger = value.InteractableToTrigger; InteractableTriggerCause = value.InteractableTriggerCause; InteractableTriggerEffect = value.InteractableTriggerEffect; InteractableTriggerValue = value.InteractableTriggerValue; InteractableTriggerAction = value.InteractableTriggerAction; Invert = value.Invert; DontCauseTriggerEffect = value.DontCauseTriggerEffect; }
void Awake() { transform_ = transform; collider_ = GetComponent <Collider2D>(); humanPlayerController_ = GetComponent <HumanPlayerController>(); renderer_ = GetComponent <SpriteRenderer>(); renderMaterial_ = renderer_.material; body_ = GetComponent <Rigidbody2D>(); switchPlayerInteract_ = transform_.Find("SwitchPlayerInteract").GetComponent <InteractableTrigger>(); body_.constraints = RigidbodyConstraints2D.FreezeAll; }
private void Release() { if (m_tempObj != null) { if (m_tempObj != null) { m_tempObj.OnTriggerUp(); } m_tempObj = null; } }
private void TraceForAnim() { Ray ray = m_cam.ScreenPointToRay(Input.mousePosition); RaycastHit2D hit2D; RaycastHit hit; Vector3 mousePos = m_cam.ScreenToWorldPoint(Input.mousePosition); if (hit2D = Physics2D.Raycast(new Vector2(mousePos.x, mousePos.y), Vector3.zero)) { if (hit2D.collider.CompareTag("Interactable")) { m_tempObj = hit2D.collider.GetComponent <InteractableTrigger>(); if (m_tempObj != null) { m_tempObj.OnTriggerDown(); } else { Debug.LogWarning("No InteractableTriggerScript found!"); } } } else if (Physics.Raycast(ray, out hit, m_castDistance, m_layerMask)) { Debug.DrawLine(ray.origin, hit.point, Color.red, 100f); if (hit.collider.CompareTag("Interactable")) { m_tempObj = hit.collider.GetComponent <InteractableTrigger>(); if (m_tempObj != null) { m_tempObj.OnTriggerDown(); } else { Debug.LogWarning("No InteractableTriggerScript found!"); } } } }
void Start() { if (weaponObj_ == null) { weaponObj_ = Weapons.Instance.CreateWeapon(WeaponId); weapon_ = weaponObj_.GetComponent <IWeapon>(); } weaponObj_.transform.SetParent(this.transform); weaponObj_.transform.localScale = Vector3.one; weaponObj_.transform.localPosition = Vector3.zero; weaponObj_.transform.rotation = Quaternion.Euler(0, 0, Random.value * 360); weaponObj_.SetActive(false); interact_ = GetComponentInChildren <InteractableTrigger>(); interact_.Message = weapon_.Name; interact_.OnAccept.AddListener(OnPickup); var weaponSprite = GetComponent <SpriteRenderer>(); WeaponSprite.sprite = weaponObj_.GetComponentInChildren <SpriteRenderer>().sprite; WeaponSprite.transform.rotation = Quaternion.Euler(0, 0, Random.value * 360); }
void Update() { // If the Player is Dead or it cannot move then just return this entire function. if (p.IsDead == true || canMove == false) { return; } // If the button for Jump was pressed. if (Input.GetButtonDown("Jump")) { Jump(); } // If the Button for the Butt Stomp if (Input.GetButtonDown("ButtStomp")) { ButtStomp(); } // If the Player is Grounded. if (isGrounded == true) { // If the previous jump lead to a drop of more than the Max Fall Distance. if (preJumpYLevel - transform.position.y > maxFallDistance) { Player.current.DamagePlayer(1); } // Always set the Pre-Jump float to the Y position if Grounded. // preJumpYLevel = transform.position.y; } // If the button for Interact was pressed. // TODO: Set this up as an actual button. if (Input.GetButtonDown("Interact")) { // Populate an array with all of the Geometry Colliders within the Interact sphere. Collider[] overlappedSphere = Physics.OverlapSphere(interactableTransform.position, interactableDistance); // If this array is not null and has a length. if (overlappedSphere != null && overlappedSphere.Length > 0) { Interactable interactable; // Itterate through the array of Colliders. foreach (Collider coll in overlappedSphere) { interactable = coll.GetComponent <Interactable>(); // If the Current collider does not have the Interactable component. if (interactable == null) { continue; } // Create a new basic InteractableTrigger so it can be Interacted with. InteractableTrigger interactingTrigger = new InteractableTrigger( interactable, InteractableTriggerCauses.OnTriggerInteract, InteractableTriggerEffect.Toggle, InteractableTriggerAction.Interact, 0f, false, false ); // Interact with the Interactable. interactable.Interact(interactingTrigger, true); } } } if (isGrounded == false) { currentJumpTimer += Time.unscaledDeltaTime; } // Check to see if the Player is Grounded. IsCurrentlyGrounded(); }
public virtual void Interact(InteractableTrigger interactableTrigger = null, bool playerInteracting = false) { CanContinue = true; if (interactableTrigger == null) { interactableTrigger = new InteractableTrigger(this, InteractableTriggerCauses.OnTriggerInteract, InteractableTriggerEffect.Toggle, InteractableTriggerAction.Interact, 0, false, false); } if (isCurrentlyAnimating == true) { CanContinue = false; } if (IsDisabled == true) { if (DisabledText != "") { if (hasDisabledTextOnlyDisplayed == false) { MainGameController.current.ShowRPGFluffText(DisabledText); } hasDisabledTextOnlyDisplayed = disabledTextOnlyDisplayOncePerSession; } CanContinue = false; } if (IsLocked == true && playerInteracting == true && interactableTrigger.InteractableTriggerAction == InteractableTriggerAction.Interact) { if (LockedText != "") { MainGameController.current.ShowRPGFluffText(LockedText); } CanContinue = false; } if (CanOnlyInteractFromOtherInteractables == true && playerInteracting == true) { if (onlyInteractFromOtherInteractblesText != "") { if (hasOnlyInteractOnlyDisplayed == false) { MainGameController.current.ShowRPGFluffText(onlyInteractFromOtherInteractblesText); } hasOnlyInteractOnlyDisplayed = onlyInteractOnlyDisplayOncePerSession; } CanContinue = false; } if ((interactableTrigger.InteractableTriggerEffect == InteractableTriggerEffect.Deactivate && IsActivated == false) || (interactableTrigger.InteractableTriggerEffect == InteractableTriggerEffect.Activate && IsActivated == true)) { CanContinue = false; } if (interactableTrigger.InteractableTriggerAction == InteractableTriggerAction.Lock) { if (interactableTrigger.InteractableTriggerEffect == InteractableTriggerEffect.Deactivate) { IsLocked = false; } if (interactableTrigger.InteractableTriggerEffect == InteractableTriggerEffect.Activate) { IsLocked = true; } if (interactableTrigger.InteractableTriggerEffect == InteractableTriggerEffect.Toggle) { IsLocked = !IsLocked; } CanContinue = false; } if (interactableTrigger.InteractableTriggerAction == InteractableTriggerAction.Interact) { if (CanContinue == true) { if (OneTimeUse == true) { IsDisabled = true; } if (interactableTrigger.InteractableTriggerEffect == InteractableTriggerEffect.Deactivate) { IsActivated = false; } if (interactableTrigger.InteractableTriggerEffect == InteractableTriggerEffect.Activate) { IsActivated = true; } if (interactableTrigger.InteractableTriggerEffect == InteractableTriggerEffect.Toggle) { IsActivated = !IsActivated; } if (Anim != null) { Anim.SetBool("IsOn", IsActivated); } } } HasToReset = false; if (canContinue == true) { if (isActivated == true && IsActivatedText != "") { if (hasIsActivatedTextOnlyDisplayed == false) { MainGameController.current.ShowRPGFluffText(IsActivatedText); } hasIsActivatedTextOnlyDisplayed = isActivatedTextOnlyDisplayOncePerSession; } if (IsActivated == false && IsDeactivatedText != "") { if (hasIsDeactivatedTextOnlyDisplayed == false) { MainGameController.current.ShowRPGFluffText(IsDeactivatedText); } hasIsDeactivatedTextOnlyDisplayed = isDeactivatedTextOnlyDisplayOncePerSession; } } if (HasToReset == false && ResetInTime > 0f) { Debug.Log("ResetTimer > 0f"); HasToReset = true; resetTime = Time.time + ResetInTime; } }