Tilt camera on player damage (tweaked by PilzAdam)
parent
5a13c49492
commit
a27cdf16f4
|
@ -233,9 +233,12 @@ void Camera::update(LocalPlayer* player, f32 frametime, v2u32 screensize,
|
||||||
m_playernode->setRotation(v3f(0, -1 * player->getYaw(), 0));
|
m_playernode->setRotation(v3f(0, -1 * player->getYaw(), 0));
|
||||||
m_playernode->updateAbsolutePosition();
|
m_playernode->updateAbsolutePosition();
|
||||||
|
|
||||||
|
//Get camera tilt timer (hurt animation)
|
||||||
|
float cameratilt = fabs(fabs(player->hurt_tilt_timer-0.75)-0.75);
|
||||||
|
|
||||||
// Set head node transformation
|
// Set head node transformation
|
||||||
m_headnode->setPosition(player->getEyeOffset());
|
m_headnode->setPosition(player->getEyeOffset()+v3f(0,cameratilt*-player->hurt_tilt_strength,0));
|
||||||
m_headnode->setRotation(v3f(player->getPitch(), 0, 0));
|
m_headnode->setRotation(v3f(player->getPitch(), 0, cameratilt*player->hurt_tilt_strength));
|
||||||
m_headnode->updateAbsolutePosition();
|
m_headnode->updateAbsolutePosition();
|
||||||
|
|
||||||
// Compute relative camera position and target
|
// Compute relative camera position and target
|
||||||
|
|
23
src/game.cpp
23
src/game.cpp
|
@ -1356,6 +1356,10 @@ void the_game(
|
||||||
// NOTE: So we have to use getTime() and call run()s between them
|
// NOTE: So we have to use getTime() and call run()s between them
|
||||||
u32 lasttime = device->getTimer()->getTime();
|
u32 lasttime = device->getTimer()->getTime();
|
||||||
|
|
||||||
|
LocalPlayer* player = client.getEnv().getLocalPlayer();
|
||||||
|
player->hurt_tilt_timer = 0;
|
||||||
|
player->hurt_tilt_strength = 0;
|
||||||
|
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
if(device->run() == false || kill == true)
|
if(device->run() == false || kill == true)
|
||||||
|
@ -2055,8 +2059,13 @@ void the_game(
|
||||||
{
|
{
|
||||||
//u16 damage = event.player_damage.amount;
|
//u16 damage = event.player_damage.amount;
|
||||||
//infostream<<"Player damage: "<<damage<<std::endl;
|
//infostream<<"Player damage: "<<damage<<std::endl;
|
||||||
|
|
||||||
damage_flash += 100.0;
|
damage_flash += 100.0;
|
||||||
damage_flash += 8.0 * event.player_damage.amount;
|
damage_flash += 8.0 * event.player_damage.amount;
|
||||||
|
|
||||||
|
player->hurt_tilt_timer = 1.5;
|
||||||
|
player->hurt_tilt_strength = event.player_damage.amount/2;
|
||||||
|
player->hurt_tilt_strength = rangelim(player->hurt_tilt_strength, 2.0, 10.0);
|
||||||
}
|
}
|
||||||
else if(event.type == CE_PLAYER_FORCE_MOVE)
|
else if(event.type == CE_PLAYER_FORCE_MOVE)
|
||||||
{
|
{
|
||||||
|
@ -2088,6 +2097,10 @@ void the_game(
|
||||||
|
|
||||||
damage_flash = 0;
|
damage_flash = 0;
|
||||||
|
|
||||||
|
LocalPlayer* player = client.getEnv().getLocalPlayer();
|
||||||
|
player->hurt_tilt_timer = 0;
|
||||||
|
player->hurt_tilt_strength = 0;
|
||||||
|
|
||||||
/*LocalPlayer* player = client.getLocalPlayer();
|
/*LocalPlayer* player = client.getLocalPlayer();
|
||||||
player->setPosition(player->getPosition() + v3f(0,-BS,0));
|
player->setPosition(player->getPosition() + v3f(0,-BS,0));
|
||||||
camera.update(player, busytime, screensize);*/
|
camera.update(player, busytime, screensize);*/
|
||||||
|
@ -3057,6 +3070,16 @@ void the_game(
|
||||||
damage_flash -= 100.0*dtime;
|
damage_flash -= 100.0*dtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Damage camera tilt
|
||||||
|
*/
|
||||||
|
if(player->hurt_tilt_timer > 0.0)
|
||||||
|
{
|
||||||
|
player->hurt_tilt_timer -= dtime*5;
|
||||||
|
if(player->hurt_tilt_timer < 0)
|
||||||
|
player->hurt_tilt_strength = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Draw gui
|
Draw gui
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -209,6 +209,9 @@ public:
|
||||||
|
|
||||||
u16 hp;
|
u16 hp;
|
||||||
|
|
||||||
|
float hurt_tilt_timer;
|
||||||
|
float hurt_tilt_strength;
|
||||||
|
|
||||||
u16 peer_id;
|
u16 peer_id;
|
||||||
|
|
||||||
std::string inventory_formspec;
|
std::string inventory_formspec;
|
||||||
|
|
Loading…
Reference in New Issue