내 C # XNA 프로그램에서 애니메이션간에 전환하려면 어떻게합니까?

Kashin

캐릭터에 애니메이션을 적용하고 왼쪽과 오른쪽으로 걷게 만들려고합니다. 기본 애니메이션을 만드는 방법을 배웠지 만 전환 방법을 알 수 없습니다.

캐릭터가 왼쪽으로 걸을 때 나는 그가 '유휴'(animatedSprite) 애니메이션에서 '왼쪽으로 걷기'(animatedSprite2) 애니메이션으로 전환하기를 바랍니다.

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WalkingAnimation
{
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        private AnimatedSprite animatedSprite, animatedSprite2;
        private Vector2 position = new Vector2(350f, 200f);
        private KeyboardState keyState;

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        protected override void Initialize()
        {
            base.Initialize();
        }

        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
            Texture2D texture = Content.Load<Texture2D>("Idle");
            Texture2D texture2 = Content.Load<Texture2D>("Run");
            animatedSprite = new AnimatedSprite(texture, 1, 11);
            animatedSprite2 = new AnimatedSprite(texture2, 1, 10);
        }

        protected override void UnloadContent()
        {
        }

        protected override void Update(GameTime gameTime)
        {
            keyState = Keyboard.GetState();

            if (keyState.IsKeyDown(Keys.Q))
            {
                position.X -= 3;
            }
            if (keyState.IsKeyDown(Keys.P))
            {
                position.X += 3;
            }

            base.Update(gameTime);
            animatedSprite.Update();
            animatedSprite2.Update();
        }

        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            base.Draw(gameTime);
            animatedSprite.Draw(spriteBatch, position);
        }
    }
}
모나 크래프트

질문에서 명확하게 표현한 것처럼 Boolean캐릭터가 유휴 상태인지 여부를 설명하는 저장 만하면됩니다.

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WalkingAnimation
{
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        private AnimatedSprite animatedSprite, animatedSprite2;
        private Vector2 position = new Vector2(350f, 200f);
        private KeyboardState keyState;
        private bool idle;

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        protected override void Initialize()
        {
            base.Initialize();
            // Start of as idle
            idle = true;
        }

        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // Textures
            Texture2D texture = Content.Load<Texture2D>("Idle");
            Texture2D texture2 = Content.Load<Texture2D>("Run");
            // Animations
            animatedSprite = new AnimatedSprite(texture, 1, 11);
            animatedSprite2 = new AnimatedSprite(texture2, 1, 10);
        }

        protected override void UnloadContent()
        {
        }

        protected override void Update(GameTime gameTime)
        {
            keyState = Keyboard.GetState();
            idle = true; // If the character doesn't move this will stay true

            if (keyState.IsKeyDown(Keys.Q))
            {
                position.X -= 3;
                idle = false;
            }
            if (keyState.IsKeyDown(Keys.P))
            {
                position.X += 3;
                idle = false;
            }

            base.Update(gameTime);
            animatedSprite.Update();
            animatedSprite2.Update();
        }

        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            base.Draw(gameTime);
            if(idle)
                animatedSprite.Draw(spriteBatch, position);
            else
                animatedSprite2.Draw(spriteBatch, position);
        }
    }
}

그리고 그것은 당신이 원하는 것을해야합니다.

또한 애니메이션이 약간 어색해지면 스프라이트 시트를 사용하고 모든 플레이어 변수를 저장할 수있는 애니메이션 클래스를 만드는 것이 좋습니다. 이것은 게임을 멀티 플레이어로 만들기로 결정한 경우 매우 유용합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

내 C 프로그램을 Arb 라이브러리에 연결하려면 어떻게해야합니까?

분류에서Dev

C # 내 Windows Form 응용 프로그램의 문자열 내부에서 몇 가지 기본 수학을 수행하려면 어떻게합니까?

분류에서Dev

사용자가 내 C # 프로그램에서 'x'를 인쇄하는 경우 콘솔 앱을 종료하려면 어떻게해야합니까?

분류에서Dev

내 C # 애플리케이션이 AWS EC2 데이터베이스에 안전하게 연결하려면 어떻게해야합니까?

분류에서Dev

내 C # 애플리케이션 내에서 새 Microsoft Edge Chromium의 버전을 확인하려면 어떻게해야합니까?

분류에서Dev

내 프로그램에서 게임의 모든 승리를 기록하려면 어떻게해야합니까?

분류에서Dev

div 내에서 이러한 div를 애니메이션하려면 어떻게해야합니까?

분류에서Dev

슬라이드 쇼 내에서 트럭을 애니메이션하려면 어떻게해야합니까?

분류에서Dev

재고 프로그램에서 데이터를 내보내거나 가져 오려면 어떻게합니까?

분류에서Dev

내 프로그램에서 함수의 LLVM IR을 사용하려면 어떻게해야합니까?

분류에서Dev

Windows 8에서 응용 프로그램간에 전환하려면 어떻게합니까?

분류에서Dev

내 C 프로그램에서 메모리를 어떻게 올바르게 할당합니까?

분류에서Dev

C # Ms Access에서 내 변환 / 피벗으로 정렬하려면 어떻게합니까?

분류에서Dev

터미널에서 한 줄로 .c 프로그램을 실행하려면 어떻게해야합니까?

분류에서Dev

내 프로그램에 글 리피 콘을 구현하고 통화 유형 전환을 수행하려면 어떻게해야합니까?

분류에서Dev

내 확장 프로그램에서 사이트의 모바일 버전을 로컬로 요청하려면 어떻게해야합니까?

분류에서Dev

내 C # 콘솔 애플리케이션을 app.config로 실행하려면 어떻게해야합니까?

분류에서Dev

내 C # 프로그램에서 dll 파일을 어떻게 사용하고 호출 할 수 있습니까?

분류에서Dev

시간이 지남에 따라 프로그램 내에서 프레임 속도를 기록하려면 어떻게해야합니까?

분류에서Dev

PL / SQL에서 직접 PRO * C 프로그램을 호출하려면 어떻게해야합니까?

분류에서Dev

내 C 프로그램을 어떻게 실행합니까?

분류에서Dev

내 서비스 응용 프로그램에 양식 응용 프로그램을 포함하려면 어떻게합니까?

분류에서Dev

내 프로그램에서 특정 파일 확장자를 열려면 어떻게해야합니까?

분류에서Dev

간섭없이 메일을 보내기 위해 내 Python 프로그램을 Outlook에 등록하려면 어떻게해야합니까?

분류에서Dev

내 확장 프로그램을 내 Android 앱에 연결하려면 어떻게합니까?

분류에서Dev

전환 애니메이션 배율은 응용 프로그램 내에서 애니메이션을 비활성화하지 않습니다.

분류에서Dev

속성을 애니메이션하고 fbx 파일로 내보내려면 어떻게합니까?

분류에서Dev

내 C ++ 프로그램에서 아래 첨자 숫자를 어떻게 사용합니까?

분류에서Dev

창 프레임 내에서 특정 TextCtrl을 표시하고 wxPython에서 프로그램 결과에 따라 인쇄하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    내 C 프로그램을 Arb 라이브러리에 연결하려면 어떻게해야합니까?

  2. 2

    C # 내 Windows Form 응용 프로그램의 문자열 내부에서 몇 가지 기본 수학을 수행하려면 어떻게합니까?

  3. 3

    사용자가 내 C # 프로그램에서 'x'를 인쇄하는 경우 콘솔 앱을 종료하려면 어떻게해야합니까?

  4. 4

    내 C # 애플리케이션이 AWS EC2 데이터베이스에 안전하게 연결하려면 어떻게해야합니까?

  5. 5

    내 C # 애플리케이션 내에서 새 Microsoft Edge Chromium의 버전을 확인하려면 어떻게해야합니까?

  6. 6

    내 프로그램에서 게임의 모든 승리를 기록하려면 어떻게해야합니까?

  7. 7

    div 내에서 이러한 div를 애니메이션하려면 어떻게해야합니까?

  8. 8

    슬라이드 쇼 내에서 트럭을 애니메이션하려면 어떻게해야합니까?

  9. 9

    재고 프로그램에서 데이터를 내보내거나 가져 오려면 어떻게합니까?

  10. 10

    내 프로그램에서 함수의 LLVM IR을 사용하려면 어떻게해야합니까?

  11. 11

    Windows 8에서 응용 프로그램간에 전환하려면 어떻게합니까?

  12. 12

    내 C 프로그램에서 메모리를 어떻게 올바르게 할당합니까?

  13. 13

    C # Ms Access에서 내 변환 / 피벗으로 정렬하려면 어떻게합니까?

  14. 14

    터미널에서 한 줄로 .c 프로그램을 실행하려면 어떻게해야합니까?

  15. 15

    내 프로그램에 글 리피 콘을 구현하고 통화 유형 전환을 수행하려면 어떻게해야합니까?

  16. 16

    내 확장 프로그램에서 사이트의 모바일 버전을 로컬로 요청하려면 어떻게해야합니까?

  17. 17

    내 C # 콘솔 애플리케이션을 app.config로 실행하려면 어떻게해야합니까?

  18. 18

    내 C # 프로그램에서 dll 파일을 어떻게 사용하고 호출 할 수 있습니까?

  19. 19

    시간이 지남에 따라 프로그램 내에서 프레임 속도를 기록하려면 어떻게해야합니까?

  20. 20

    PL / SQL에서 직접 PRO * C 프로그램을 호출하려면 어떻게해야합니까?

  21. 21

    내 C 프로그램을 어떻게 실행합니까?

  22. 22

    내 서비스 응용 프로그램에 양식 응용 프로그램을 포함하려면 어떻게합니까?

  23. 23

    내 프로그램에서 특정 파일 확장자를 열려면 어떻게해야합니까?

  24. 24

    간섭없이 메일을 보내기 위해 내 Python 프로그램을 Outlook에 등록하려면 어떻게해야합니까?

  25. 25

    내 확장 프로그램을 내 Android 앱에 연결하려면 어떻게합니까?

  26. 26

    전환 애니메이션 배율은 응용 프로그램 내에서 애니메이션을 비활성화하지 않습니다.

  27. 27

    속성을 애니메이션하고 fbx 파일로 내보내려면 어떻게합니까?

  28. 28

    내 C ++ 프로그램에서 아래 첨자 숫자를 어떻게 사용합니까?

  29. 29

    창 프레임 내에서 특정 TextCtrl을 표시하고 wxPython에서 프로그램 결과에 따라 인쇄하려면 어떻게해야합니까?

뜨겁다태그

보관