2021-09-29, 12:44
  #1
Medlem
Kod:
Vector2D worldToMap(Vector2D pos) {
	int TILE_WIDTH = 60;
	int TILE_HEIGHT = 30;
	int TILE_WIDTH_HALF = TILE_WIDTH/2;
	int TILE_HEIGHT_HALF = TILE_HEIGHT/2;
	int map_x = (pos.x / TILE_WIDTH_HALF + pos.y / TILE_HEIGHT_HALF) / 2;
	int map_y = (pos.y / TILE_HEIGHT_HALF - (pos.x / TILE_WIDTH_HALF)) / 2;
	Vector2D result;
	result.x = map_x;
	result.y = map_y;
	return(result);
};
void lighting(std::vector<Sprite> toAffect,Sprite lightsource) {
	for (Sprite& a : toAffect) {
		Vector2D temp;
		temp.x = a.pos.x - (resolution.x/2);
		temp.y = a.pos.y - (resolution.x/2);
		SDL_SetTextureColorMod(a.texture,1000/getDistance(worldToMap(temp).x,worldToMap(temp).y,worldToMap(lightsource.pos).x,worldToMap(lightsour  ce.pos).y),1000/getDistance(worldToMap(temp).x,worldToMap(temp).y,worldToMap(lightsource.pos).x,worldToMap(lightsour  ce.pos).y),1000/getDistance(worldToMap(temp).x,worldToMap(temp).y,worldToMap(lightsource.pos).x,worldToMap(lightsour  ce.pos).y));
	};
};

https://i.imgur.com/r34QkFO.png

Resultatet blir delvist förväntat, dock blir t.ex rutorna som är tre rutor bortom ljuskällan mörkare än förväntat. Meningen är att det belysningen på brickorna ska vara linjärt korrelerat till avståndet till riddaren.
__________________
Senast redigerad av realnigga 2021-09-29 kl. 12:50.
Citera
2021-11-03, 17:30
  #2
Medlem
Citat:
Ursprungligen postat av realnigga
Kod:
		temp.x = a.pos.x - (resolution.x/2);
		temp.y = a.pos.y - (resolution.x/2);
};

Kan inte mycket av vad koden gör men kan det vara så att det ska vara: temp.y = a.pos.y - (resolution.y/2); istället?
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in