コード例 #1
0
        //methods
        private void Walk(Player player)
        {
            if (!isWalking)
            {
                if (direction == Directions.Up && animIdleUp != null)
                {
                    anim = animIdleUp;
                }
                if (direction == Directions.Down && animIdleDown != null)
                {
                    anim = animIdleDown;
                }
                if (direction == Directions.Right || direction == Directions.Left)
                {
                    anim = animIdleSide;
                }
            }
            else
            {
                if (direction == Directions.Up && animWalkUp != null)
                {
                    anim = animWalkUp;
                }
                if (direction == Directions.Down && animWalkDown != null)
                {
                    anim = animWalkDown;
                }
                if (direction == Directions.Left || direction == Directions.Right)
                {
                    anim = animWalkSide;
                }
            }

            isWalking = false;

            if (isFollowing)
            {
                float distance = Vector2.Distance(position, player.position);
                if (followRange < distance) // away from player
                {
                    Vector2 movedirection = player.position - position;
                    movedirection.Normalize();
                    Vector2 tempPos = position;

                    tempPos += movedirection * speed;
                    if (!EnemyMonster.didCollide(tempPos, radius))
                    {
                        position += movedirection * speed;
                    }
                    else
                    {
                        position.Y += speed;
                    }

                    if (movedirection.X > movedirection.Y)
                    {
                        direction = Directions.Right;
                    }
                    if (movedirection.X < movedirection.Y)
                    {
                        direction = Directions.Left;
                    }
                    isWalking = true;
                }
            }
        }
コード例 #2
0
        //methods
        private void Walk()
        {
            if (!isWalking)
            {
                if (direction == Directions.Up)
                {
                    anim = animIdleUp;
                }
                if (direction == Directions.Down)
                {
                    anim = animIdleDown;
                }
                if (direction == Directions.Right || direction == Directions.Left)
                {
                    anim = animIdleSide;
                }
            }
            else
            {
                if (direction == Directions.Up)
                {
                    anim = animWalkUp;
                }
                if (direction == Directions.Down)
                {
                    anim = animWalkDown;
                }
                if (direction == Directions.Left || direction == Directions.Right)
                {
                    anim = animWalkSide;
                }
            }

            isWalking = false;

            KeyboardState mouse   = Keyboard.GetState();
            Vector2       tempPos = position;

            if (mouse.IsKeyDown(Keys.Right))
            {
                tempPos.X += speed;
                if (!EnemyMonster.didCollide(tempPos, radius))
                {
                    position.X += speed;
                    direction   = Directions.Right;
                    isWalking   = true;
                }
            }
            if (mouse.IsKeyDown(Keys.Left))
            {
                tempPos.X -= speed;
                if (!EnemyMonster.didCollide(tempPos, radius))
                {
                    position.X -= speed;
                    direction   = Directions.Left;
                    isWalking   = true;
                }
            }
            if (mouse.IsKeyDown(Keys.Up))
            {
                tempPos.Y -= speed;
                if (!EnemyMonster.didCollide(tempPos, radius))
                {
                    position.Y -= speed;
                    direction   = Directions.Up;
                    isWalking   = true;
                }
            }
            if (mouse.IsKeyDown(Keys.Down))
            {
                tempPos.Y += speed;
                if (!EnemyMonster.didCollide(tempPos, radius))
                {
                    position.Y += speed;
                    direction   = Directions.Down;
                    isWalking   = true;
                }
            }
        }