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;
}
}