C++遊戲編程:創建3D遊戲第二章課後練習答案

這本書全網連個答案都沒有,這本書就這麼冷門嗎?

2.7.1 略

2.7.2

支持多組動畫,增加一組角色

// ----------------------------------------------------------------
// From Game Programming in C++ by Sanjay Madhav
// Copyright (C) 2017 Sanjay Madhav. All rights reserved.
// 
// Released under the BSD License
// See LICENSE in root directory for full details.
// ----------------------------------------------------------------

#include "Human.h"
#include "AnimSpriteComponent.h"
#include "Game.h"

Human::Human(Game* game)
	:Actor(game)
{
	// Create an animated sprite component
	AnimSpriteComponent* asc = new AnimSpriteComponent(this);
	std::vector<SDL_Texture*> anims = {
		game->GetTexture("Assets/Character01.png"),
		game->GetTexture("Assets/Character02.png"),
		game->GetTexture("Assets/Character03.png"),
		game->GetTexture("Assets/Character04.png"),
		game->GetTexture("Assets/Character05.png"),
		game->GetTexture("Assets/Character06.png"),
		game->GetTexture("Assets/Character07.png"),
		game->GetTexture("Assets/Character08.png"),
		game->GetTexture("Assets/Character09.png"),
		game->GetTexture("Assets/Character10.png"),
		game->GetTexture("Assets/Character11.png"),
		game->GetTexture("Assets/Character12.png"),
		game->GetTexture("Assets/Character13.png"),
		game->GetTexture("Assets/Character14.png"),
		game->GetTexture("Assets/Character15.png"),
		game->GetTexture("Assets/Character16.png"),
		game->GetTexture("Assets/Character17.png"),
		game->GetTexture("Assets/Character18.png"),
	};
	asc->SetAnimTextures(anims);
}

是否循環

	//是否循環
	bool IsLoop;
	void AnimSpriteComponent::Update(float deltaTime)
{
	if (!IsLoop&&mCurrFrame>=mAnimTextures.size())
	{
		return;
	}
	SpriteComponent::Update(deltaTime);

	// Update the current frame based on frame rate
		// and delta time
	mCurrFrame += mAnimFPS * deltaTime;

	// Wrap current frame if needed
	if (!IsLoop&&mCurrFrame >= mAnimTextures.size())
	{
		return;
	}
	else {
		while (mCurrFrame >= mAnimTextures.size())
		{
			mCurrFrame -= mAnimTextures.size();
		}
	}
	// Set the current texture
	SetTexture(mAnimTextures[static_cast<int>(mCurrFrame)]);
}

2.7.3

做不出來

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章