Vinnaren i pepparkakshustävlingen!
2017-05-09, 12:16
  #1
Medlem
ShowerStalkers avatar
Jag har ett rektangel formade objekt som man kan styra med piltangenterna. Några liknande objekt finns i luften som är en mark. Man ska kunna stå eller bounca beroende på vilken sida som kolliderar. Men nåt är fel på den högra och botten sidan. Kan någon klura ut varför?

Fullständig kod:
https://codepen.io/anon/pen/rmpqBd?editors=0010

__________________
Senast redigerad av ShowerStalker 2017-05-09 kl. 12:23.
Citera
2017-05-09, 14:15
  #2
Medlem
ShowerStalkers avatar
Dubbelpost
Citera
2017-05-09, 14:16
  #3
Medlem
ShowerStalkers avatar
Jag hittade felet, man ska kontrollera om distansen dx och dy är större än 0.

Kod:
	function collision() {
		player.isOnGround = false;
		
		for (var i = 0; i < terrains.length; i++) {
			var current_terrain = terrains[i];
			
			var dx = current_terrain.centerX() - player.centerX();
			var dy = current_terrain.centerY() - player.centerY();
			
			var half_widths = player.halfWidth() + current_terrain.halfWidth();
			var half_heights = player.halfHeight() + current_terrain.halfHeight();
			
			if (Math.abs(dx) < half_widths && Math.abs(dy) < half_heights) {
				ox = half_widths - Math.abs(dx);
				oy = half_heights - Math.abs(dy);
				
				if (ox >= oy) {
					if (dy > 0) {
						player.y -= oy;
						player.vy = 0;
						player.isOnGround = true;
					} else {
						player.y += oy;
						player.vy *= -1;
					}
				} else {
					if (dx > 0) {
						player.x -= ox;
						player.vx = 0;
					} else {
						player.x += ox;
						player.vx = 0;
					}
				}
			}
		}
	}
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback