Example #1
0
    public override void Walk(Vector2 input)
    {
        lastInput = input;

        if (currentNode == null)
        {
            base.Walk(input);
            currentVelocity = rigidBody.velocity;
        }
        else
        {
            currentVelocity = maxWalkSpeed * input;
            setFacing(input);
            animator.UpdateMovementAnim(Facing, currentVelocity.magnitude);
            transform.position = currentTunnel.MoveInDirection(ref currentNode,
                                                               transform.position, currentVelocity * Time.deltaTime);
            if (currentNode == null)
            {
                currentTunnel      = null;
                rigidBody.bodyType = RigidbodyType2D.Dynamic;
            }
        }
    }
Example #2
0
    private void OnTriggerStay2D(Collider2D collision)
    {
        if (currentNode != null)
        {
            return;
        }

        RatTunnel tunnel = collision.GetComponent <RatTunnel>();

        if (tunnel == null)
        {
            return;
        }

        RatTunnelNode entry = tunnel.GetEntryNode(transform.position, lastInput);

        if (entry != null)
        {
            currentNode        = entry;
            currentTunnel      = tunnel;
            rigidBody.bodyType = RigidbodyType2D.Static;
        }
    }