Ejemplo n.º 1
0
    /// <summary>
    /// Tries to attach and obj to the platform if it's not already attached
    /// </summary>
    /// <param name="other">The other Collider2D involved in this collision</param>
    private void AttachObject(Collider2D other)
    {
        if (crumbled)
        {
            return;
        }
        ObjectController2D obj = other.GetComponent <ObjectController2D>();

        if (obj && !objs.Contains(obj))
        {
            // doesn't attach to the obj if it's a 1 way platform and the obj is below it
            if (pConfig.owPlatformMask == (pConfig.owPlatformMask | (1 << gameObject.layer)) &&
                (obj.transform.position.y < transform.position.y || obj.TotalSpeed.y > 0))
            {
                return;
            }
            else
            {
                objs.Add(obj);
                if (crumbleTime > 0 && currentCrumbleTime <= 0)
                {
                    if (!onlyPlayerCrumble || obj.GetComponent <PlayerController>())
                    {
                        currentCrumbleTime = crumbleTime;
                        animator.SetTrigger(ANIMATION_CRUMBLING);
                    }
                }
            }
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Tries to move any objects that are above this one
    /// </summary>
    /// <param name="deltaMove">How much to move each object</param>
    protected void MoveObjectsAbove(Vector2 deltaMove)
    {
        List <ObjectController2D> objsToMove = new List <ObjectController2D>();
        float rayLength  = skinWidth * 2;
        float directionX = Mathf.Sign(deltaMove.x);

        for (int i = 0; i < verticalRayCount; i++)
        {
            Vector2 rayOrigin = directionX == 1 ? raycastOrigins.topRight : raycastOrigins.topLeft;
            rayOrigin += Vector2.right * (verticalRaySpacing * i) * -directionX;
            RaycastHit2D[] hits = Physics2D.RaycastAll(rayOrigin, Vector2.up,
                                                       rayLength, pConfig.standOnCollisionMask);
            Debug.DrawRay(rayOrigin, Vector2.up * rayLength, Color.cyan);
            foreach (RaycastHit2D hit in hits)
            {
                ObjectController2D obj = hit.transform.GetComponent <ObjectController2D>();
                if (obj && !objsToMove.Contains(obj) && hit.distance > 0)
                {
                    objsToMove.Add(obj);
                }
            }
        }
        foreach (ObjectController2D obj in objsToMove)
        {
            obj.Move(deltaMove);
        }
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Sent when another object leaves a trigger collider attached to
    /// this object (2D physics only).
    /// </summary>
    /// <param name="other">The other Collider2D involved in this collision.</param>
    void OnTriggerExit2D(Collider2D other)
    {
        ObjectController2D obj = other.GetComponent <ObjectController2D>();

        if (obj && objs.Contains(obj))
        {
            objs.Remove(obj);
            obj.ApplyForce(speed);
        }
    }
Ejemplo n.º 4
0
    /// <summary>
    /// Sent when another object enters a trigger collider attached to this
    /// object (2D physics only).
    /// </summary>
    /// <param name="other">The other Collider2D involved in this collision.</param>
    void OnTriggerEnter2D(Collider2D other)
    {
        ObjectController2D obj = other.GetComponent <ObjectController2D>();

        if (obj)
        {
            obj.SetForce(force);
            obj.IgnoreFriction = true;
            CharacterController2D character = obj.GetComponent <CharacterController2D>();
            if (character)
            {
                character.ResetJumpsAndDashes();
            }
            animator.SetTrigger(jumpAnimation);
            if (audioSource)
            {
                audioSource.Play();
            }
        }
    }
Ejemplo n.º 5
0
    // Use this for initialization
    void Start()
    {
        controller = GetComponent <ObjectController2D>();

        //origMoveSpeed = moveSpeed;
    }
Ejemplo n.º 6
0
 void Start()
 {
     objectController = GetComponent <ObjectController2D>();
     sprite           = GetComponent <SpriteRenderer>();
 }