본문으로 바로가기

2020-1102-월-Model.zip
3.08MB
2020-1102-월-Model.z01
10.00MB

 

 

 

1. Model Jump

더보기
void ModelObject::Jump()
{
	if (onGround == false) return;
	//
	onGround = false;
	//
	fallSpeed = jumpForce;
	//
	SetAction(JUMP, 3.0f);
}

void ModelObject::Fall()
{
	if (onGround == true) return;
	//
	fallSpeed -= gravity * DELTA;
	position.y += fallSpeed * DELTA;
	//
	if (position.y <= terrain->GetHeight(GlobalPos()))
	{
		position.y = terrain->GetHeight(GlobalPos());
		onGround = true;
		fallSpeed = 0;
		SetAction(IDLE);
	}
}

void ModelObject::Update()
{
	if (KEY_DOWN(VK_SPACE))
		Jump();
	if (KEY_DOWN(VK_LCONTROL))
		Attack();

	Fall();
}

 

2. Follow Camera

더보기
CharacterScene::CharacterScene()
{
	CAMERA->SetTarget(modelObj);
	Vector3 defaultOffset = {0, 6.0f, -10.0f};
	CAMERA->SetDefaulatOffset(defaultOffset);
}

void Camera::Update()
{
	if (KEY_UP(VK_F1))
	{
		isFollow = !isFollow;
		followOffset =  this->position - followTarget->GlobalPos();
	}
	//
	if (KEY_UP(VK_F2))
		followOffset = defaultOffset;
	//
	Move();
}

void Camera::Move()
{
	if (isFollow == true)
	{ // Follow Cam
		if (followTarget != nullptr)
			position = followOffset + followTarget->GlobalPos();
		//
		if (KEY_PRESS('I')) followOffset += Forward() * offsetSpeed * DELTA;
		if (KEY_PRESS('K')) followOffset -= Forward() * offsetSpeed * DELTA;
		if (KEY_PRESS('L')) followOffset += Right() * offsetSpeed * DELTA;
		if (KEY_PRESS('J')) followOffset -= Right() * offsetSpeed * DELTA;
		if (KEY_PRESS('O')) followOffset += Up() * offsetSpeed * DELTA;
		if (KEY_PRESS('U')) followOffset -= Up() * offsetSpeed * DELTA;
	}
	else
	{ // Free Cam
		if (KEY_PRESS(VK_RBUTTON))
		{
			if (KEY_PRESS('W')) position += Forward() * moveSpeed * DELTA;
			if (KEY_PRESS('S')) position -= Forward() * moveSpeed * DELTA;
			if (KEY_PRESS('A')) position -= Right() * moveSpeed * DELTA;
			if (KEY_PRESS('D')) position += Right() * moveSpeed * DELTA;
			if (KEY_PRESS('Q')) position -= Up() * moveSpeed * DELTA;
			if (KEY_PRESS('E')) position += Up() * moveSpeed * DELTA;
		}
		//
		position += Forward() * Control::Get()->GetWheel() * moveSpeed * DELTA;
	}
}

DX11 3D Game Programming카테고리의 다른글

2020_1105 Object Collision  (0) 2020.11.05
2020_1104 Model Collision  (0) 2020.11.04
2020_1029 Model Animation  (0) 2020.10.29
2020_1026 Map Edit ( Model )  (0) 2020.10.26
2020_1021 Terrain Edit ( Texture Splatting )  (0) 2020.10.21