Quantcast
Channel: Community | MonoGame - Latest topics
Viewing all articles
Browse latest Browse all 6821

Why I can't see a completed attacking animation in MonoGame?

$
0
0

@iPixelGames wrote:

Hi, everyone,
I have a question about animation in MonoGame, please look at the following code, all other animations are OK in test, but the Attack animation is wrong, the attack animation has 3 frames, but usually I can only see it can play 1 frame or 2 frames, maybe my code has some problems, Could you tell me how to deal with the problem?

enum Animations
{
    Idle,
    Run,
    Jump,
    Fall,
    Attack
}

public void update()
{
    var moveDir = new Vector2(_xAxisInput.value, 0);

    if (moveDir.X > 0)
    {
	if (!_collisionState.below)
	{
	    animation = Animations.Jump;
	}
	else
	{
	    animation = Animations.Run;
	}

	_animation.flipX = false;
	_velocity.X = moveSpeed;
    }
    else if (moveDir.X < 0)
    {
	if (!_collisionState.below)
	{
	    animation = Animations.Jump;
	}
	else
	{
	    animation = Animations.Run;
	}
	_animation.flipX = true;
	_velocity.X = -moveSpeed;
    }
    else
    {
	_velocity.X = 0;
	if (_collisionState.below)
	{
	    animation = Animations.Idle;
	}
    }

    //jump
    if (_collisionState.below && _jumpInput.isPressed)
    {
	animation = Animations.Jump;
	_velocity.Y = -Mathf.sqrt(2.0f * jumpHeight * gravity);
    }

    //falling
    if (!_collisionState.below && _velocity.Y > 0)
	animation = Animations.Fall;

    //attack
    if (_attackInput.isPressed)
    {
	animation = Animations.Attack;                
    }

    //apply gravity
    _velocity.Y += gravity * Time.deltaTime;

    var deltaMove = _velocity * Time.deltaTime;

    //move
    _mover.move(deltaMove, _boxCollider, _collisionState);

    if (_collisionState.below)
	_velocity.Y = 0;

    if (!_animation.isAnimationPlaying(animation))
    {
	_animation.play(animation);
    }
}

Posts: 2

Participants: 2

Read full topic


Viewing all articles
Browse latest Browse all 6821

Trending Articles