コード例 #1
0
    /// <summary>
    /// Starts a Dodge.
    /// </summary>
    /// <param name="dir"></param>
    public void dodge(Utilities.direction dir)
    {
        becomeImmune();
        rbd.velocity = new Vector2(0, 0);
        jumpTimer    = 0f;
        float dashSpeed;

        if (state == Utilities.state.Air)
        {
            canDodge         = false;
            rbd.gravityScale = 0f;
            if (fastFalling)
            {
                stopFastFalling();
            }
            dashSpeed = airDodgeSpeed;
            state     = Utilities.state.AirDodging;
        }
        else
        {
            state     = Utilities.state.Dodging;
            dashSpeed = groundDodgeSpeed;
        }
        anim.Play("Dash");
        switch (dir)
        {
        case Utilities.direction.Up:
        {
            rbd.AddForce(Vector2.up * dashSpeed, ForceMode2D.Impulse);
        }
        break;

        case Utilities.direction.Left:
        {
            rbd.AddForce(Vector2.left * dashSpeed, ForceMode2D.Impulse);
        }
        break;

        case Utilities.direction.Right:
        {
            rbd.AddForce(Vector2.right * dashSpeed, ForceMode2D.Impulse);
        }
        break;

        case Utilities.direction.Down:
        {
            rbd.AddForce(Vector2.down * dashSpeed, ForceMode2D.Impulse);
        }
        break;
        }
    }
コード例 #2
0
    protected void sideKnockBackEntity(Entity target, float totalKnockBack, Utilities.direction direction)
    {
        float camf = 0.1f;

        if (totalKnockBack > 30)
        {
            camf = 0.5f;
        }
        user.cam.transform.DOShakePosition(0.1f, camf, 1, 90, false, true);

        target.RigidBody.velocity = new Vector2(0, 0);
        float forceY = 0;

        if (target.State == Utilities.state.Air)
        {
            Vector2 forceDirection = (target.transform.position - user.transform.position);
            if (forceDirection.y > 0.5f)
            {
                forceY = totalKnockBack * 0.5f;
            }
            else if (forceDirection.y < -0.5f)
            {
                forceY = totalKnockBack * -0.5f;
            }
            else
            {
                forceY = forceDirection.y * totalKnockBack;
            }
        }
        else
        {
            forceY = totalKnockBack / 2;
        }

        if (direction == Utilities.direction.Right)
        {
            target.RigidBody.AddForce(new Vector2(totalKnockBack, forceY), ForceMode2D.Impulse);
        }
        else
        {
            target.RigidBody.AddForce(new Vector2(-totalKnockBack, forceY), ForceMode2D.Impulse);
        }
        target.StartCoroutine(target.hitStun(totalKnockBack));
    }
コード例 #3
0
    private void diagonalKnockBackEntity(Entity target, float totalKnockBack, Utilities.direction direction)
    {
        float camf = 0.1f;

        if (totalKnockBack > 30)
        {
            camf = 0.5f;
        }
        user.cam.transform.DOShakePosition(0.1f, camf, 1, 90, false, true);

        target.RigidBody.velocity = new Vector2(0, 0);
        if (direction == Utilities.direction.Right)
        {
            target.RigidBody.AddForce(new Vector2(totalKnockBack / 2, totalKnockBack / 2), ForceMode2D.Impulse);
        }
        else
        {
            target.RigidBody.AddForce(new Vector2(-totalKnockBack / 2, totalKnockBack / 2), ForceMode2D.Impulse);
        }
    }
コード例 #4
0
    /// <summary>
    /// Lets go to specified direction
    /// </summary>
    /// <param name="dir">The desired direction</param>
    protected void letGo(Utilities.direction dir)
    {
        rbd.gravityScale = gravityAmount;
        state            = Utilities.state.Air;
        grabbedEdge      = null;
        becomeHittable();

        if (dir == Utilities.direction.Down)
        {
            rbd.velocity = new Vector2(rbd.velocity.x, -1);
        }
        else if (dir == Utilities.direction.Right)
        {
            rbd.velocity = new Vector2(1, rbd.velocity.y);
        }
        else if (dir == Utilities.direction.Left)
        {
            rbd.velocity = new Vector2(-1, rbd.velocity.y);
        }
    }
コード例 #5
0
 public void setDirection(Utilities.direction dir)
 {
     thrownDirection = dir;
 }