Added max overlap clamp.

This commit is contained in:
photonstorm
2013-12-06 02:44:06 +00:00
parent 8e289e6b7c
commit ca3c71e8f5
2 changed files with 45 additions and 1 deletions
+2 -1
View File
@@ -8,7 +8,8 @@ function preload() {
// game.load.image('phaser', 'assets/sprites/phaser-ship.png');
// game.load.image('phaser', 'assets/sprites/mushroom2.png');
// game.load.image('phaser', 'assets/sprites/wabbit.png');
game.load.image('phaser', 'assets/sprites/arrow.png');
// game.load.image('phaser', 'assets/sprites/arrow.png');
game.load.image('phaser', 'assets/sprites/darkwing_crazy.png');
}
+43
View File
@@ -1018,6 +1018,8 @@ Phaser.Physics.Arcade.prototype = {
var tile;
var localOverlapX = 0;
var localOverlapY = 0;
var maxOverlapX = Math.round(tiles[0].width / 2);
var maxOverlapY = Math.round(tiles[0].height / 2);
for (var i = 0; i < tiles.length; i++)
{
@@ -1030,6 +1032,11 @@ Phaser.Physics.Arcade.prototype = {
// LEFT
localOverlapX = body.x - tile.right;
if (localOverlapX < -maxOverlapX)
{
localOverlapX = 0;
}
if (localOverlapX >= body.deltaX())
{
console.log('m left overlapX', localOverlapX, body.deltaX(), this.game.time.physicsElapsed);
@@ -1044,6 +1051,11 @@ Phaser.Physics.Arcade.prototype = {
// RIGHT
localOverlapX = body.right - tile.x;
if (localOverlapX > maxOverlapX)
{
localOverlapX = 0;
}
// Distance check
if (localOverlapX <= body.deltaX())
{
@@ -1059,6 +1071,12 @@ Phaser.Physics.Arcade.prototype = {
// UP
localOverlapY = body.y - tile.bottom;
// negatives
if (localOverlapY < -maxOverlapY)
{
localOverlapY = 0;
}
// Distance check
if (localOverlapY >= body.deltaY())
{
@@ -1073,6 +1091,11 @@ Phaser.Physics.Arcade.prototype = {
// DOWN
localOverlapY = body.bottom - tile.y;
if (localOverlapY > maxOverlapY)
{
localOverlapY = 0;
}
if (localOverlapY <= body.deltaY())
{
console.log('m down overlapY', localOverlapY, body.deltaY(), this.game.time.physicsElapsed);
@@ -1164,6 +1187,11 @@ Phaser.Physics.Arcade.prototype = {
// LEFT
body.overlapX = body.x - tile.right;
if (body.overlapX < -maxOverlapX)
{
body.overlapX = 0;
}
if (body.overlapX >= body.deltaX())
{
console.log('left overlapX', body.overlapX, body.deltaX(), this.game.time.physicsElapsed);
@@ -1178,6 +1206,11 @@ Phaser.Physics.Arcade.prototype = {
// RIGHT
body.overlapX = body.right - tile.x;
if (body.overlapX > maxOverlapX)
{
body.overlapX = 0;
}
// Distance check
if (body.overlapX <= body.deltaX())
{
@@ -1193,6 +1226,11 @@ Phaser.Physics.Arcade.prototype = {
// UP
body.overlapY = body.y - tile.bottom;
if (body.overlapY < -maxOverlapY)
{
body.overlapY = 0;
}
// Distance check
if (body.overlapY >= body.deltaY())
{
@@ -1207,6 +1245,11 @@ Phaser.Physics.Arcade.prototype = {
// DOWN
body.overlapY = body.bottom - tile.y;
if (body.overlapY > maxOverlapY)
{
body.overlapY = 0;
}
if (body.overlapY <= body.deltaY())
{
console.log('down overlapY', body.overlapY, body.deltaY(), this.game.time.physicsElapsed);