mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Tilt camera on player damage (tweaked by PilzAdam)
This commit is contained in:
		@@ -233,9 +233,12 @@ void Camera::update(LocalPlayer* player, f32 frametime, v2u32 screensize,
 | 
			
		||||
	m_playernode->setRotation(v3f(0, -1 * player->getYaw(), 0));
 | 
			
		||||
	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
 | 
			
		||||
	m_headnode->setPosition(player->getEyeOffset());
 | 
			
		||||
	m_headnode->setRotation(v3f(player->getPitch(), 0, 0));
 | 
			
		||||
	m_headnode->setPosition(player->getEyeOffset()+v3f(0,cameratilt*-player->hurt_tilt_strength,0));
 | 
			
		||||
	m_headnode->setRotation(v3f(player->getPitch(), 0, cameratilt*player->hurt_tilt_strength));
 | 
			
		||||
	m_headnode->updateAbsolutePosition();
 | 
			
		||||
 | 
			
		||||
	// 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
 | 
			
		||||
	u32 lasttime = device->getTimer()->getTime();
 | 
			
		||||
 | 
			
		||||
	LocalPlayer* player = client.getEnv().getLocalPlayer();
 | 
			
		||||
	player->hurt_tilt_timer = 0;
 | 
			
		||||
	player->hurt_tilt_strength = 0;
 | 
			
		||||
 | 
			
		||||
	for(;;)
 | 
			
		||||
	{
 | 
			
		||||
		if(device->run() == false || kill == true)
 | 
			
		||||
@@ -2055,8 +2059,13 @@ void the_game(
 | 
			
		||||
				{
 | 
			
		||||
					//u16 damage = event.player_damage.amount;
 | 
			
		||||
					//infostream<<"Player damage: "<<damage<<std::endl;
 | 
			
		||||
 | 
			
		||||
					damage_flash += 100.0;
 | 
			
		||||
					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)
 | 
			
		||||
				{
 | 
			
		||||
@@ -2088,6 +2097,10 @@ void the_game(
 | 
			
		||||
 | 
			
		||||
					damage_flash = 0;
 | 
			
		||||
 | 
			
		||||
					LocalPlayer* player = client.getEnv().getLocalPlayer();
 | 
			
		||||
					player->hurt_tilt_timer = 0;
 | 
			
		||||
					player->hurt_tilt_strength = 0;
 | 
			
		||||
 | 
			
		||||
					/*LocalPlayer* player = client.getLocalPlayer();
 | 
			
		||||
					player->setPosition(player->getPosition() + v3f(0,-BS,0));
 | 
			
		||||
					camera.update(player, busytime, screensize);*/
 | 
			
		||||
@@ -3057,6 +3070,16 @@ void the_game(
 | 
			
		||||
			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
 | 
			
		||||
		*/
 | 
			
		||||
 
 | 
			
		||||
@@ -209,6 +209,9 @@ public:
 | 
			
		||||
 | 
			
		||||
	u16 hp;
 | 
			
		||||
 | 
			
		||||
	float hurt_tilt_timer;
 | 
			
		||||
	float hurt_tilt_strength;
 | 
			
		||||
 | 
			
		||||
	u16 peer_id;
 | 
			
		||||
	
 | 
			
		||||
	std::string inventory_formspec;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user