示例#1
0
 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;
 }
示例#2
0
 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;
 }
示例#3
0
 private void Release()
 {
     if (m_tempObj != null)
     {
         if (m_tempObj != null)
         {
             m_tempObj.OnTriggerUp();
         }
         m_tempObj = null;
     }
 }
示例#4
0
    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!");
                }
            }
        }
    }
示例#5
0
    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();
    }
示例#7
0
    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;
        }
    }