From 257cbe3be8efe30fc334c68ecbd16d3ec5480357 Mon Sep 17 00:00:00 2001 From: Richard Davey Date: Mon, 23 Sep 2013 03:26:08 +0100 Subject: [PATCH] Much more stable collision, just need to refactor the Tilemap handling - see if I can optimise it a bit too. --- Docs/Screen Shots/phaser_sprite_bounds.png | Bin 0 -> 136875 bytes README.md | 5 + examples/camera/camera cull.php | 64 +++ examples/camera/moving the camera.php | 70 +++ examples/collision/vertical collision.php | 72 +++ examples/tweens/chained tweens.php | 18 +- src/gameobjects/Sprite.js | 15 +- src/geom/Rectangle.js | 2 +- src/physics/arcade/ArcadePhysics.js | 529 ++++++++++----------- src/physics/arcade/Body.js | 59 +-- src/tilemap/Tile.js | 41 +- src/tilemap/Tilemap.js | 2 + 12 files changed, 517 insertions(+), 360 deletions(-) create mode 100644 Docs/Screen Shots/phaser_sprite_bounds.png create mode 100644 examples/camera/camera cull.php create mode 100644 examples/camera/moving the camera.php create mode 100644 examples/collision/vertical collision.php diff --git a/Docs/Screen Shots/phaser_sprite_bounds.png b/Docs/Screen Shots/phaser_sprite_bounds.png new file mode 100644 index 0000000000000000000000000000000000000000..cda91f282cea575385291ea206275be35b880eb1 GIT binary patch literal 136875 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%0D@#i(j6OKdrAQa)*lT-O? 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 4a31cd0b..82e5eea7 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,11 @@ Version 1.0.6 (in progress) * New: When loading a Sprite Sheet you can now pass negative values for the frame sizes which specifies the number of rows/columns to load instead (thanks TheJare) * New: BitmapText now supports anchor and has fixed box dimensions (thanks TheJare) * Fixed bug where if a State contains an empty Preloader the Update will not be called (thanks TheJare) +* Added World.postUpdate - all sprite position changes, as a result of physics, happen here before the render. +* Complete overhaul of Physics.Arcade.Body - now significantly more stable and faster too. +* Updated ArcadePhysics.separateX/Y to use new body system - much better results now. +* QuadTree bug found in 1.0.5 now fixed. The QuadTree is updated properly now using worldTransform values. +* Several new examples added (cameras, tweens, etc) diff --git a/examples/camera/camera cull.php b/examples/camera/camera cull.php new file mode 100644 index 00000000..00b87050 --- /dev/null +++ b/examples/camera/camera cull.php @@ -0,0 +1,64 @@ + + + + + \ No newline at end of file diff --git a/examples/camera/moving the camera.php b/examples/camera/moving the camera.php new file mode 100644 index 00000000..7fc2c508 --- /dev/null +++ b/examples/camera/moving the camera.php @@ -0,0 +1,70 @@ + + + + + \ No newline at end of file diff --git a/examples/collision/vertical collision.php b/examples/collision/vertical collision.php new file mode 100644 index 00000000..a878458d --- /dev/null +++ b/examples/collision/vertical collision.php @@ -0,0 +1,72 @@ + + + + + \ No newline at end of file diff --git a/examples/tweens/chained tweens.php b/examples/tweens/chained tweens.php index cb77634f..1d01dd69 100644 --- a/examples/tweens/chained tweens.php +++ b/examples/tweens/chained tweens.php @@ -7,7 +7,7 @@ (function () { - var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update, render: render }); + var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create }); var p; @@ -19,23 +19,17 @@ function create() { - game.stage.backgroundColor = 0x337799; + game.stage.backgroundColor = 0x2d2d2d; - p = game.add.sprite(0, 0, 'diamond'); + p = game.add.sprite(100, 100, 'diamond'); - game.add.tween(p).to({ x: 700 }, 1000, Phaser.Easing.Linear.None, true) + game.add.tween(p).to({ x: 600 }, 2000, Phaser.Easing.Linear.None, true) .to({ y: 300 }, 1000, Phaser.Easing.Linear.None) - .to({ x: 0 }, 1000, Phaser.Easing.Linear.None) - .to({ y: 0 }, 1000, Phaser.Easing.Linear.None) + .to({ x: 100 }, 2000, Phaser.Easing.Linear.None) + .to({ y: 100 }, 1000, Phaser.Easing.Linear.None) .loop(); } - function update() { - } - - function render() { - } - })(); diff --git a/src/gameobjects/Sprite.js b/src/gameobjects/Sprite.js index 160fc8f1..be395d24 100644 --- a/src/gameobjects/Sprite.js +++ b/src/gameobjects/Sprite.js @@ -210,9 +210,6 @@ Phaser.Sprite.prototype.preUpdate = function() { this._cache.dirty = true; } - // this._cache.x = this.x - (this.game.world.camera.x * this.scrollFactor.x); - // this._cache.y = this.y - (this.game.world.camera.y * this.scrollFactor.y); - if (this.visible) { this.renderOrderID = this.game.world.currentRenderOrderID++; @@ -299,10 +296,14 @@ Phaser.Sprite.prototype.postUpdate = function() { // The sprite is positioned in this call, after taking into consideration motion updates and collision this.body.postUpdate(); - this.position.x -= (this.game.world.camera.x * this.scrollFactor.x); - this.position.y -= (this.game.world.camera.y * this.scrollFactor.y); - this.x -= (this.game.world.camera.x * this.scrollFactor.x); - this.y -= (this.game.world.camera.y * this.scrollFactor.y); + this._cache.x = this.x - (this.game.world.camera.x * this.scrollFactor.x); + this._cache.y = this.y - (this.game.world.camera.y * this.scrollFactor.y); + + if (this.position.x != this._cache.x || this.position.y != this._cache.y) + { + this.position.x = this._cache.x; + this.position.y = this._cache.y; + } } } diff --git a/src/geom/Rectangle.js b/src/geom/Rectangle.js index 54a279eb..ca7de4f6 100644 --- a/src/geom/Rectangle.js +++ b/src/geom/Rectangle.js @@ -648,7 +648,7 @@ Phaser.Rectangle.equals = function (a, b) { */ Phaser.Rectangle.intersection = function (a, b, out) { - out = out || new Phaser.Rectangle; + out = out || new Phaser.Rectangle; if (Phaser.Rectangle.intersects(a, b)) { diff --git a/src/physics/arcade/ArcadePhysics.js b/src/physics/arcade/ArcadePhysics.js index 6cba4a13..094b6a15 100644 --- a/src/physics/arcade/ArcadePhysics.js +++ b/src/physics/arcade/ArcadePhysics.js @@ -380,12 +380,6 @@ Phaser.Physics.Arcade.prototype = { this._result = (this.separateX(body1, body2) || this.separateY(body1, body2)); - // if (this._result) - // { - // body1.postUpdate(); - // body2.postUpdate(); - // } - }, /** @@ -396,106 +390,103 @@ Phaser.Physics.Arcade.prototype = { */ separateX: function (body1, body2) { - // Can't separate two immovable or non-existing bodys + // Can't separate two immovable bodies if (body1.immovable && body2.immovable) { return false; } - // First, get the two body deltas this._overlap = 0; - if (body1.deltaX() != body2.deltaX()) + // Check if the hulls actually overlap + if (Phaser.Rectangle.intersects(body1, body2)) { - // Check if the X hulls actually overlap + this._maxOverlap = body1.deltaAbsX() + body2.deltaAbsX() + this.OVERLAP_BIAS; - this._bounds1.setTo(body1.x - ((body1.deltaX() > 0) ? body1.deltaX() : 0), body1.lastY, body1.width + ((body1.deltaX() > 0) ? body1.deltaX() : -body1.deltaX()), body1.height); - this._bounds2.setTo(body2.x - ((body2.deltaX() > 0) ? body2.deltaX() : 0), body2.lastY, body2.width + ((body2.deltaX() > 0) ? body2.deltaX() : -body2.deltaX()), body2.height); - - if ((this._bounds1.right > this._bounds2.x) && (this._bounds1.x < this._bounds2.right) && (this._bounds1.bottom > this._bounds2.y) && (this._bounds1.y < this._bounds2.bottom)) + if (body1.deltaX() == 0 && body2.deltaX() == 0) { - this._maxOverlap = body1.deltaAbsX() + body2.deltaAbsX() + this.OVERLAP_BIAS; + // They overlap but neither of them are moving + body1.embedded = true; + body2.embedded = true; + } + else if (body1.deltaX() > body2.deltaX()) + { + // Body1 is moving right and/or Body2 is moving left + this._overlap = body1.x + body1.width - body2.x; - // If they did overlap (and can), figure out by how much and flip the corresponding flags - if (body1.deltaX() > body2.deltaX()) + if ((this._overlap > this._maxOverlap) || body1.allowCollision.right == false || body2.allowCollision.left == false) { - this._overlap = body1.x + body1.width - body2.x; - - if ((this._overlap > this._maxOverlap) || body1.allowCollision.right == false || body2.allowCollision.left == false) - { - this._overlap = 0; - } - else - { - body1.touching.right = true; - body2.touching.left = true; - } + this._overlap = 0; } - else if (body1.deltaX() < body2.deltaX()) + else { - this._overlap = body1.x - body2.width - body2.x; - - if ((-this._overlap > this._maxOverlap) || body1.allowCollision.left == false || body2.allowCollision.right == false) - { - this._overlap = 0; - } - else - { - body1.touching.left = true; - body2.touching.right = true; - } + body1.touching.right = true; + body2.touching.left = true; } } - } - - // Then adjust their positions and velocities accordingly (if there was any overlap) - if (this._overlap != 0) - { - body1.overlapX = this._overlap; - body2.overlapX = this._overlap; - - if (body1.customSeparateX || body2.customSeparateX) + else if (body1.deltaX() < body2.deltaX()) { + // Body1 is moving left and/or Body2 is moving right + this._overlap = body1.x - body2.width - body2.x; + + if ((-this._overlap > this._maxOverlap) || body1.allowCollision.left == false || body2.allowCollision.right == false) + { + this._overlap = 0; + } + else + { + body1.touching.left = true; + body2.touching.right = true; + } + } + + // Then adjust their positions and velocities accordingly (if there was any overlap) + if (this._overlap != 0) + { + body1.overlapX = this._overlap; + body2.overlapX = this._overlap; + + if (body1.customSeparateX || body2.customSeparateX) + { + return true; + } + + this._velocity1 = body1.velocity.x; + this._velocity2 = body2.velocity.x; + + if (!body1.immovable && !body2.immovable) + { + this._overlap *= 0.5; + + body1.x = body1.x - this._overlap; + body2.x += this._overlap; + + this._newVelocity1 = Math.sqrt((this._velocity2 * this._velocity2 * body2.mass) / body1.mass) * ((this._velocity2 > 0) ? 1 : -1); + this._newVelocity2 = Math.sqrt((this._velocity1 * this._velocity1 * body1.mass) / body2.mass) * ((this._velocity1 > 0) ? 1 : -1); + this._average = (this._newVelocity1 + this._newVelocity2) * 0.5; + this._newVelocity1 -= this._average; + this._newVelocity2 -= this._average; + + body1.velocity.x = this._average + this._newVelocity1 * body1.bounce.x; + body2.velocity.x = this._average + this._newVelocity2 * body2.bounce.x; + } + else if (!body1.immovable) + { + body1.x = body1.x - this._overlap; + body1.velocity.x = this._velocity2 - this._velocity1 * body1.bounce.x; + } + else if (!body2.immovable) + { + body2.x += this._overlap; + body2.velocity.x = this._velocity1 - this._velocity2 * body2.bounce.x; + } + return true; } - - this._velocity1 = body1.velocity.x; - this._velocity2 = body2.velocity.x; - - if (!body1.immovable && !body2.immovable) - { - this._overlap *= 0.5; - - body1.x = body1.x - this._overlap; - body2.x += this._overlap; - - this._newVelocity1 = Math.sqrt((this._velocity2 * this._velocity2 * body2.mass) / body1.mass) * ((this._velocity2 > 0) ? 1 : -1); - this._newVelocity2 = Math.sqrt((this._velocity1 * this._velocity1 * body1.mass) / body2.mass) * ((this._velocity1 > 0) ? 1 : -1); - this._average = (this._newVelocity1 + this._newVelocity2) * 0.5; - this._newVelocity1 -= this._average; - this._newVelocity2 -= this._average; - - body1.velocity.x = this._average + this._newVelocity1 * body1.bounce.x; - body2.velocity.x = this._average + this._newVelocity2 * body2.bounce.x; - } - else if (!body1.immovable) - { - body1.x = body1.x - this._overlap; - body1.velocity.x = this._velocity2 - this._velocity1 * body1.bounce.x; - } - else if (!body2.immovable) - { - body2.x += this._overlap; - body2.velocity.x = this._velocity1 - this._velocity2 * body2.bounce.x; - } - - return true; - } - else - { - return false; } + return false; + }, /** @@ -512,110 +503,110 @@ Phaser.Physics.Arcade.prototype = { return false; } - // First, get the two body deltas this._overlap = 0; - if (body1.deltaY() != body2.deltaY()) + // Check if the hulls actually overlap + if (Phaser.Rectangle.intersects(body1, body2)) { - // Check if the Y hulls actually overlap - this._bounds1.setTo(body1.x, body1.y - ((body1.deltaY() > 0) ? body1.deltaY() : 0), body1.width, body1.height + body1.deltaAbsY()); - this._bounds2.setTo(body2.x, body2.y - ((body2.deltaY() > 0) ? body2.deltaY() : 0), body2.width, body2.height + body2.deltaAbsY()); + this._maxOverlap = body1.deltaAbsY() + body2.deltaAbsY() + this.OVERLAP_BIAS; - if ((this._bounds1.right > this._bounds2.x) && (this._bounds1.x < this._bounds2.right) && (this._bounds1.bottom > this._bounds2.y) && (this._bounds1.y < this._bounds2.bottom)) + if (body1.deltaY() == 0 && body2.deltaY() == 0) { - this._maxOverlap = body1.deltaAbsY() + body2.deltaAbsY() + this.OVERLAP_BIAS; + // They overlap but neither of them are moving + body1.embedded = true; + body2.embedded = true; + } + else if (body1.deltaY() > body2.deltaY()) + { + // Body1 is moving down and/or Body2 is moving up + this._overlap = body1.y + body1.height - body2.y; - // If they did overlap (and can), figure out by how much and flip the corresponding flags - if (body1.deltaY() > body2.deltaY()) + if ((this._overlap > this._maxOverlap) || body1.allowCollision.down == false || body2.allowCollision.up == false) { - this._overlap = body1.y + body1.height - body2.y; - - if ((this._overlap > this._maxOverlap) || body1.allowCollision.down == false || body2.allowCollision.up == false) - { - this._overlap = 0; - } - else - { - body1.touching.down = true; - body2.touching.up = true; - } + this._overlap = 0; } - else if (body1.deltaY() < body2.deltaY()) + else { - this._overlap = body1.y - body2.height - body2.y; - - if ((-this._overlap > this._maxOverlap) || body1.allowCollision.up == false || body2.allowCollision.down == false) - { - this._overlap = 0; - } - else - { - body1.touching.up = true; - body2.touching.down = true; - } + body1.touching.down = true; + body2.touching.up = true; } } - } - - // Then adjust their positions and velocities accordingly (if there was any overlap) - if (this._overlap != 0) - { - body1.overlapY = this._overlap; - body2.overlapY = this._overlap; - - if (body1.customSeparateY || body2.customSeparateY) + else if (body1.deltaY() < body2.deltaY()) { + // Body1 is moving up and/or Body2 is moving down + this._overlap = body1.y - body2.height - body2.y; + + if ((-this._overlap > this._maxOverlap) || body1.allowCollision.up == false || body2.allowCollision.down == false) + { + this._overlap = 0; + } + else + { + body1.touching.up = true; + body2.touching.down = true; + } + } + + // Then adjust their positions and velocities accordingly (if there was any overlap) + if (this._overlap != 0) + { + body1.overlapY = this._overlap; + body2.overlapY = this._overlap; + + if (body1.customSeparateY || body2.customSeparateY) + { + return true; + } + + this._velocity1 = body1.velocity.y; + this._velocity2 = body2.velocity.y; + + if (!body1.immovable && !body2.immovable) + { + this._overlap *= 0.5; + + body1.y = body1.y - this._overlap; + body2.y += this._overlap; + + this._newVelocity1 = Math.sqrt((this._velocity2 * this._velocity2 * body2.mass) / body1.mass) * ((this._velocity2 > 0) ? 1 : -1); + this._newVelocity2 = Math.sqrt((this._velocity1 * this._velocity1 * body1.mass) / body2.mass) * ((this._velocity1 > 0) ? 1 : -1); + this._average = (this._newVelocity1 + this._newVelocity2) * 0.5; + this._newVelocity1 -= this._average; + this._newVelocity2 -= this._average; + + body1.velocity.y = this._average + this._newVelocity1 * body1.bounce.y; + body2.velocity.y = this._average + this._newVelocity2 * body2.bounce.y; + } + else if (!body1.immovable) + { + body1.y = body1.y - this._overlap; + body1.velocity.y = this._velocity2 - this._velocity1 * body1.bounce.y; + + // This is special case code that handles things like horizontal moving platforms you can ride + if (body2.active && body2.moves && (body1.deltaY() > body2.deltaY())) + { + body1.x += body2.x - body2.lastX; + } + } + else if (!body2.immovable) + { + body2.y += this._overlap; + body2.velocity.y = this._velocity1 - this._velocity2 * body2.bounce.y; + + // This is special case code that handles things like horizontal moving platforms you can ride + if (body1.sprite.active && body1.moves && (body1.deltaY() < body2.deltaY())) + { + body2.x += body1.x - body1.lastX; + } + } + return true; } - this._velocity1 = body1.velocity.y; - this._velocity2 = body2.velocity.y; - - if (!body1.immovable && !body2.immovable) - { - this._overlap *= 0.5; - - body1.y = body1.y - this._overlap; - body2.y += this._overlap; - - this._newVelocity1 = Math.sqrt((this._velocity2 * this._velocity2 * body2.mass) / body1.mass) * ((this._velocity2 > 0) ? 1 : -1); - this._newVelocity2 = Math.sqrt((this._velocity1 * this._velocity1 * body1.mass) / body2.mass) * ((this._velocity1 > 0) ? 1 : -1); - this._average = (this._newVelocity1 + this._newVelocity2) * 0.5; - this._newVelocity1 -= this._average; - this._newVelocity2 -= this._average; - - body1.velocity.y = this._average + this._newVelocity1 * body1.bounce.y; - body2.velocity.y = this._average + this._newVelocity2 * body2.bounce.y; - } - else if (!body1.immovable) - { - body1.y = body1.y - this._overlap; - body1.velocity.y = this._velocity2 - this._velocity1 * body1.bounce.y; - - // This is special case code that handles things like horizontal moving platforms you can ride - if (body2.active && body2.moves && (body1.deltaY() > body2.deltaY())) - { - body1.x += body2.x - body2.lastX; - } - } - else if (!body2.immovable) - { - body2.y += this._overlap; - body2.velocity.y = this._velocity1 - this._velocity2 * body2.bounce.y; - - // This is special case code that handles things like horizontal moving platforms you can ride - if (body1.sprite.active && body1.moves && (body1.deltaY() < body2.deltaY())) - { - body2.x += body1.x - body1.lastX; - } - } - - return true; - } - else - { - return false; } + + return false; + }, /** @@ -626,12 +617,11 @@ Phaser.Physics.Arcade.prototype = { */ separateTile: function (object, x, y, width, height, mass, collideLeft, collideRight, collideUp, collideDown, separateX, separateY) { - var separatedY = this.separateTileY(object.body, x, y, width, height, mass, collideUp, collideDown, separateY); var separatedX = this.separateTileX(object.body, x, y, width, height, mass, collideLeft, collideRight, separateX); + var separatedY = this.separateTileY(object.body, x, y, width, height, mass, collideUp, collideDown, separateY); if (separatedX || separatedY) { - object.body.postUpdate(); return true; } @@ -653,77 +643,67 @@ Phaser.Physics.Arcade.prototype = { return false; } - // First, get the object delta this._overlap = 0; - // console.log('separatedX', x, y, object.deltaX()); - - if (object.deltaX() != 0) + if (Phaser.Rectangle.intersectsRaw(object, x, x + width, y, y + height)) { - this._bounds1.setTo(object.x, object.y, object.width, object.height); + this._maxOverlap = object.deltaAbsX() + this.OVERLAP_BIAS; - if ((this._bounds1.right > x) && (this._bounds1.x < x + width) && (this._bounds1.bottom > y) && (this._bounds1.y < y + height)) + if (object.deltaX() == 0) { - // The hulls overlap, let's process it - this._maxOverlap = object.deltaAbsX() + this.OVERLAP_BIAS; - - // TODO - We need to check if we're already inside of the tile, i.e. jumping through an n-way tile - // in which case we didn't ought to separate because it'll look like tunneling - - if (object.deltaX() > 0) - { - // Going right ... - this._overlap = object.x + object.width - x; - - if ((this._overlap > this._maxOverlap) || !object.allowCollision.right || !collideLeft) - { - this._overlap = 0; - } - else - { - object.touching.right = true; - } - } - else if (object.deltaX() < 0) - { - // Going left ... - this._overlap = object.x - width - x; - - if ((-this._overlap > this._maxOverlap) || !object.allowCollision.left || !collideRight) - { - this._overlap = 0; - } - else - { - object.touching.left = true; - } - } + // Object is stuck inside a tile and not moving } - } - - // Then adjust their positions and velocities accordingly (if there was any overlap) - if (this._overlap != 0) - { - if (separate) + else if (object.deltaX() > 0) { - object.x = object.x - this._overlap; + // Going right ... + this._overlap = object.x + object.width - x; - if (object.bounce.x == 0) + if ((this._overlap > this._maxOverlap) || !object.allowCollision.right || !collideLeft) { - object.velocity.x = 0; + this._overlap = 0; } else { - object.velocity.x = -object.velocity.x * object.bounce.x; + object.touching.right = true; } } - return true; - } - else - { - return false; + else if (object.deltaX() < 0) + { + // Going left ... + this._overlap = object.x - width - x; + + if ((-this._overlap > this._maxOverlap) || !object.allowCollision.left || !collideRight) + { + this._overlap = 0; + } + else + { + object.touching.left = true; + } + } + + if (this._overlap != 0) + { + if (separate) + { + object.x = object.x - this._overlap; + + if (object.bounce.x == 0) + { + object.velocity.x = 0; + } + else + { + object.velocity.x = -object.velocity.x * object.bounce.x; + } + } + return true; + } + } + return false; + }, /** @@ -740,77 +720,66 @@ Phaser.Physics.Arcade.prototype = { return false; } - // First, get the object delta this._overlap = 0; - if (object.deltaY() != 0) + if (Phaser.Rectangle.intersectsRaw(object, x, x + width, y, y + height)) { - this._bounds1.setTo(object.x, object.y, object.width, object.height); + this._maxOverlap = object.deltaAbsY() + this.OVERLAP_BIAS; - if ((this._bounds1.right > x) && (this._bounds1.x < x + width) && (this._bounds1.bottom > y) && (this._bounds1.y < y + height)) + if (object.deltaY() == 0) { - // The hulls overlap, let's process it + // Object is stuck inside a tile and not moving + } + else if (object.deltaY() > 0) + { + // Going down ... + this._overlap = object.bottom - y; - // Not currently used, may need it so keep for now - this._maxOverlap = object.deltaAbsY() + this.OVERLAP_BIAS; - - // TODO - We need to check if we're already inside of the tile, i.e. jumping through an n-way tile - // in which case we didn't ought to separate because it'll look like tunneling - - if (object.deltaY() > 0) + // if (object.allowCollision.down && collideDown && this._overlap < this._maxOverlap) + if ((this._overlap > this._maxOverlap) || !object.allowCollision.down || !collideDown) { - // Going down ... - this._overlap = object.bottom - y; - - // if (object.allowCollision.down && collideDown && this._overlap < this._maxOverlap) - if ((this._overlap > this._maxOverlap) || !object.allowCollision.down || !collideDown) - { - this._overlap = 0; - } - else - { - object.touching.down = true; - } + this._overlap = 0; } else { - // Going up ... - this._overlap = object.y - height - y; - - if ((-this._overlap > this._maxOverlap) || !object.allowCollision.up || !collideUp) - { - this._overlap = 0; - } - else - { - object.touching.up = true; - } + object.touching.down = true; } } - } - - // Then adjust their positions and velocities accordingly (if there was any overlap) - if (this._overlap != 0) - { - if (separate) + else if (object.deltaY() < 0) { - object.y = object.y - this._overlap; + // Going up ... + this._overlap = object.y - height - y; - if (object.bounce.y == 0) + if ((-this._overlap > this._maxOverlap) || !object.allowCollision.up || !collideUp) { - object.velocity.y = 0; + this._overlap = 0; } else { - object.velocity.y = -object.velocity.y * object.bounce.y; + object.touching.up = true; } } - return true; - } - else - { - return false; + + if (this._overlap != 0) + { + if (separate) + { + object.y = object.y - this._overlap; + + if (object.bounce.y == 0) + { + object.velocity.y = 0; + } + else + { + object.velocity.y = -object.velocity.y * object.bounce.y; + } + } + return true; + } } + + return false; }, diff --git a/src/physics/arcade/Body.js b/src/physics/arcade/Body.js index d2aac936..7f64ad5b 100644 --- a/src/physics/arcade/Body.js +++ b/src/physics/arcade/Body.js @@ -9,8 +9,6 @@ Phaser.Physics.Arcade.Body = function (sprite) { this.y = sprite.y; this.preX = sprite.x; this.preY = sprite.y; - this.lastX = sprite.x; - this.lastY = sprite.y; // un-scaled original size this.sourceWidth = sprite.currentFrame.sourceSizeW; @@ -64,6 +62,9 @@ Phaser.Physics.Arcade.Body = function (sprite) { this.overlapX = 0; this.overlapY = 0; + // If a body is overlapping with another body, but neither of them are moving (maybe they spawned on-top of each other?) this is set to true + this.embedded = false; + this.collideWorldBounds = false; }; @@ -99,6 +100,8 @@ Phaser.Physics.Arcade.Body.prototype = { this.touching.left = false; this.touching.right = false; + this.embedded = false; + this.preX = (this.sprite.worldTransform[2] - (this.sprite.anchor.x * this.width)) + this.offset.x; this.preY = (this.sprite.worldTransform[5] - (this.sprite.anchor.y * this.height)) + this.offset.y; this.rotation = this.sprite.angle; @@ -106,12 +109,6 @@ Phaser.Physics.Arcade.Body.prototype = { this.x = this.preX; this.y = this.preY; - // There is a bug here in that the worldTransform values are what should be used, otherwise the quadTree gets the wrong rect given to it - // this.x = (this.sprite.x - (this.sprite.anchor.x * this.width)) + this.offset.x; - // this.y = (this.sprite.y - (this.sprite.anchor.y * this.height)) + this.offset.y; - // this.x = (this.sprite.worldTransform[2] - (this.sprite.anchor.x * this.width)) + this.offset.x; - // this.y = (this.sprite.worldTransform[5] - (this.sprite.anchor.y * this.height)) + this.offset.y; - if (this.moves) { this.game.physics.updateMotion(this); @@ -129,51 +126,24 @@ Phaser.Physics.Arcade.Body.prototype = { this.game.physics.quadTree.insert(this); } - if (this.allowRotation) - { - this.sprite.angle = this.rotation; - } - }, postUpdate: function () { if (this.deltaX() != 0) { - this.sprite.position.x += this.deltaX(); this.sprite.x += this.deltaX(); } if (this.deltaY() != 0) { - this.sprite.position.y += this.deltaY(); this.sprite.y += this.deltaY(); } - - // this._cache.x = this.x - (this.game.world.camera.x * this.scrollFactor.x); - // this._cache.y = this.y - (this.game.world.camera.y * this.scrollFactor.y); - - - // if (this.position.x != this._cache.x || this.position.y != this._cache.y) - // { - // this.position.x = this._cache.x; - // this.position.y = this._cache.y; - // this._cache.dirty = true; - // } - - - // Adjust the sprite based on all of the above, so the x/y coords will be correct going into the State update - // this.sprite.x = this.x - this.offset.x + (this.sprite.anchor.x * this.width); - // this.sprite.y = this.y - this.offset.y + (this.sprite.anchor.y * this.height); - - // this.sprite.x = this.x - this.offset.x + (this.sprite.anchor.x * this.width); - // this.sprite.y = this.y - this.offset.y + (this.sprite.anchor.y * this.height); - - // if (this.allowRotation) - // { - // this.sprite.angle = this.rotation; - // } + if (this.allowRotation) + { + this.sprite.angle = this.rotation; + } }, @@ -226,30 +196,25 @@ Phaser.Physics.Arcade.Body.prototype = { this.angularVelocity = 0; this.angularAcceleration = 0; - // this.x = (this.sprite.x - (this.sprite.anchor.x * this.width)) + this.offset.x; - // this.y = (this.sprite.y - (this.sprite.anchor.y * this.height)) + this.offset.y; - // this.lastX = this.x; - // this.lastY = this.y; + this.x = (this.sprite.worldTransform[2] - (this.sprite.anchor.x * this.width)) + this.offset.x; + this.y = (this.sprite.worldTransform[5] - (this.sprite.anchor.y * this.height)) + this.offset.y; + this.rotation = this.sprite.angle; }, deltaAbsX: function () { - // return (this.deltaX() > 0 ? this.deltaX() : -this.deltaX()); return (this.deltaX() > 0 ? this.deltaX() : -this.deltaX()); }, deltaAbsY: function () { - // return (this.deltaY() > 0 ? this.deltaY() : -this.deltaY()); return (this.deltaY() > 0 ? this.deltaY() : -this.deltaY()); }, deltaX: function () { - // return this.x - this.lastX; return this.x - this.preX; }, deltaY: function () { - // return this.y - this.lastY; return this.y - this.preY; } diff --git a/src/tilemap/Tile.js b/src/tilemap/Tile.js index 94795789..e4500526 100644 --- a/src/tilemap/Tile.js +++ b/src/tilemap/Tile.js @@ -121,18 +121,33 @@ Phaser.Tile.prototype = { this.collideUp = false; this.collideDown = false; - }, - - /** - * Returns a string representation of this object. - * @method toString - * @return {string} a string representation of the object. - **/ - toString: function () { - - // return "[{Tile (index=" + this.index + " collisions=" + this.allowCollisions + " width=" + this.width + " height=" + this.height + ")}]"; - return ''; - } -}; \ No newline at end of file +}; + +Object.defineProperty(Phaser.Tile.prototype, "bottom", { + + /** + * The sum of the y and height properties. Changing the bottom property of a Rectangle object has no effect on the x, y and width properties, but does change the height property. + * @method bottom + * @return {Number} + **/ + get: function () { + return this.y + this.height; + } + +}); + +Object.defineProperty(Phaser.Tile.prototype, "right", { + + /** + * The sum of the x and width properties. Changing the right property of a Rectangle object has no effect on the x, y and height properties. + * However it does affect the width property. + * @method right + * @return {Number} + **/ + get: function () { + return this.x + this.width; + } + +}); diff --git a/src/tilemap/Tilemap.js b/src/tilemap/Tilemap.js index cae0ff92..fa695266 100644 --- a/src/tilemap/Tilemap.js +++ b/src/tilemap/Tilemap.js @@ -183,6 +183,8 @@ Phaser.Tilemap.prototype.parseTiledJSON = function (json, key) { */ Phaser.Tilemap.prototype.generateTiles = function (qty) { + console.log('generating', qty, 'tiles'); + for (var i = 0; i < qty; i++) { this.tiles.push(new Phaser.Tile(this.game, this, i, this.currentLayer.tileWidth, this.currentLayer.tileHeight));