예제 #1
0
    private void Jump()
    {
        jumping = false;

        EditorDebug.Log(eventQueue.Count);

        while (eventQueue.Count != 0)
        {
            Character.Order ev = eventQueue.Dequeue();

            EditorDebug.Log(ev);

            if (ev == Character.Order.OrderJump)
            {
                rigidbody2D.AddForce(jumpForce, ForceMode2D.Impulse);

                if (character.transform.position.y < maxHeight)
                {
                    jumping = true;
                }
            }
        }

        if (!jumping)
        {
            stateMachine.Trigger(Character.Trigger.Fall);
        }
    }
예제 #2
0
    protected override void OnUpdate()
    {
        while (eventQueue.Count != 0)
        {
            Character.Order ev = eventQueue.Dequeue();

            if (ev == Character.Order.OrderMoveLeft)
            {
                rigidbody2D.AddForce(moveForce * -1, ForceMode2D.Impulse);
            }
            else if (ev == Character.Order.OrderMoveRight)
            {
                rigidbody2D.AddForce(moveForce, ForceMode2D.Impulse);
            }
        }

        if (rigidbody2D.velocity.x >= maxVelocityX)
        {
            rigidbody2D.AddForce(moveForce * -1, ForceMode2D.Impulse);
        }
        else if (rigidbody2D.velocity.x <= -maxVelocityX)
        {
            rigidbody2D.AddForce(moveForce, ForceMode2D.Impulse);
        }

        if (rigidbody2D.velocity.x == 0)
        {
            stateMachine.Trigger(Character.Trigger.StopMoving);
        }
    }
예제 #3
0
    protected override void OnUpdate()
    {
        while (eventQueue.Count != 0)
        {
            Character.Order ev = eventQueue.Dequeue();

            if (ev == Character.Order.OrderMoveLeft || ev == Character.Order.OrderMoveRight)
            {
                stateMachine.Trigger(Character.Trigger.Move);
            }
        }
    }
예제 #4
0
    protected override void OnUpdate()
    {
        while (eventQueue.Count != 0)
        {
            Character.Order ev = eventQueue.Dequeue();

            if (ev == Character.Order.OrderJump)
            {
                stateMachine.Trigger(Character.Trigger.Jump);
            }
        }
    }
예제 #5
0
 public virtual void ProcessOrder(Character.Order e)
 {
     eventQueue.Enqueue(e);
 }