mirror of
https://github.com/wassname/phaser.git
synced 2026-06-27 16:10:15 +08:00
Added Game Update loop step debugging - has proved utterly invaluable! Resolved camera jitter issues, gravity / downward force on tile/boundary issues and most tilemap collision issues.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
"layers":[
|
||||
{
|
||||
"height":18,
|
||||
"image":"..\/sprites\/bunny.png",
|
||||
"image":"..\/..\/sprites\/bunny.png",
|
||||
"name":"Image Layer 1",
|
||||
"opacity":1,
|
||||
"properties":
|
||||
@@ -18,7 +18,7 @@
|
||||
"y":0
|
||||
},
|
||||
{
|
||||
"data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 11, 11, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
"data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 11, 11, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
"height":18,
|
||||
"name":"Tile Layer 1",
|
||||
"opacity":1,
|
||||
@@ -259,7 +259,7 @@
|
||||
"tilesets":[
|
||||
{
|
||||
"firstgid":1,
|
||||
"image":"ground_1x1.png",
|
||||
"image":"..\/tiles\/ground_1x1.png",
|
||||
"imageheight":32,
|
||||
"imagewidth":800,
|
||||
"margin":0,
|
||||
@@ -281,7 +281,7 @@
|
||||
},
|
||||
{
|
||||
"firstgid":26,
|
||||
"image":"walls_1x2.png",
|
||||
"image":"..\/tiles\/walls_1x2.png",
|
||||
"imageheight":64,
|
||||
"imagewidth":256,
|
||||
"margin":0,
|
||||
@@ -296,7 +296,7 @@
|
||||
},
|
||||
{
|
||||
"firstgid":34,
|
||||
"image":"..\/sprites\/coin.png",
|
||||
"image":"..\/..\/sprites\/coin.png",
|
||||
"imageheight":32,
|
||||
"imagewidth":192,
|
||||
"margin":0,
|
||||
@@ -311,7 +311,7 @@
|
||||
},
|
||||
{
|
||||
"firstgid":40,
|
||||
"image":"tiles2.png",
|
||||
"image":"..\/tiles\/tiles2.png",
|
||||
"imageheight":910,
|
||||
"imagewidth":840,
|
||||
"margin":0,
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<property name="collides" value="true"/>
|
||||
</properties>
|
||||
<data encoding="base64">
|
||||
AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAACwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAACQAAAAEAAAABAAAAAQAAAAEAAAABAAAACQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA
|
||||
AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAACwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAACQAAAAEAAAABAAAAAQAAAAEAAAABAAAACQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="Tile Layer 2" width="50" height="18">
|
||||
|
||||
@@ -8,7 +8,8 @@ function preload() {
|
||||
game.load.image('walls_1x2', 'assets/tilemaps/tiles/walls_1x2.png');
|
||||
game.load.image('tiles2', 'assets/tilemaps/tiles/tiles2.png');
|
||||
|
||||
game.load.image('phaser', 'assets/sprites/shinyball.png');
|
||||
// game.load.image('phaser', 'assets/sprites/shinyball.png');
|
||||
game.load.image('phaser', 'assets/sprites/firstaid.png');
|
||||
// game.load.image('phaser', 'assets/sprites/atari130xe.png');
|
||||
// game.load.image('phaser', 'assets/sprites/mushroom2.png');
|
||||
|
||||
@@ -23,13 +24,18 @@ var layer2;
|
||||
var layer3;
|
||||
|
||||
var sprite;
|
||||
var marker;
|
||||
|
||||
function create() {
|
||||
|
||||
console.log(' --- state create start ---');
|
||||
|
||||
$('#step').click(function(){
|
||||
game.step();
|
||||
});
|
||||
|
||||
marker = new Phaser.Line(256, 0, 256, 600);
|
||||
|
||||
map = game.add.tilemap('map');
|
||||
|
||||
map.addTilesetImage('ground_1x1');
|
||||
@@ -42,12 +48,22 @@ function create() {
|
||||
|
||||
// layer.debug = true;
|
||||
|
||||
layer.resizeWorld();
|
||||
// layer.resizeWorld();
|
||||
|
||||
game.physics.gravity.y = 200;
|
||||
|
||||
|
||||
sprite = game.add.sprite(100, 300, 'phaser'); // up test
|
||||
|
||||
// sprite = game.add.sprite(200, 240, 'phaser'); // 3-block corner test
|
||||
|
||||
sprite = game.add.sprite(170, 450, 'phaser');
|
||||
sprite.debug = true;
|
||||
|
||||
sprite.body.velocity.x = 200;
|
||||
game.stepping = true;
|
||||
|
||||
// sprite.body.velocity.y = -300;
|
||||
|
||||
sprite.body.velocity.y = 200;
|
||||
|
||||
|
||||
// sprite.anchor.setTo(0.5, 0.5);
|
||||
@@ -63,7 +79,7 @@ function create() {
|
||||
|
||||
// sprite.angle = 35;
|
||||
|
||||
game.camera.follow(sprite);
|
||||
// game.camera.follow(sprite);
|
||||
|
||||
// game.input.onDown.add(getIt, this);
|
||||
|
||||
@@ -73,6 +89,8 @@ function create() {
|
||||
|
||||
function update() {
|
||||
|
||||
console.log(' --- state update start ---');
|
||||
|
||||
/*
|
||||
if (cursors.left.isDown)
|
||||
{
|
||||
@@ -94,6 +112,8 @@ function update() {
|
||||
*/
|
||||
game.physics.collide(sprite, layer);
|
||||
|
||||
// sprite.body.velocity.y = -300;
|
||||
|
||||
// sprite.body.velocity.x = 0;
|
||||
// sprite.body.velocity.y = 0;
|
||||
// sprite.body.angularVelocity = 0;
|
||||
@@ -137,7 +157,8 @@ function update() {
|
||||
|
||||
if (cursors.up.isDown)
|
||||
{
|
||||
sprite.body.velocity.y = -100;
|
||||
console.log('cursor up');
|
||||
sprite.body.velocity.y = -300;
|
||||
}
|
||||
else if (cursors.down.isDown)
|
||||
{
|
||||
@@ -161,9 +182,11 @@ function render() {
|
||||
// game.debug.renderSpriteBody(sprite);
|
||||
// game.debug.renderSpriteBounds(sprite);
|
||||
|
||||
game.debug.renderPhysicsBody(sprite.body);
|
||||
// game.debug.renderPhysicsBody(sprite.body);
|
||||
game.debug.renderBodyInfo(sprite, 32, 32);
|
||||
|
||||
// game.debug.renderLine(marker, 'rgba(255,255,255,0.5)');
|
||||
|
||||
// game.debug.renderText(sprite.deltaX, 32, 32);
|
||||
// game.debug.renderText(sprite.deltaY, 32, 48);
|
||||
// game.debug.renderText(sprite.body.deltaX(), 232, 32);
|
||||
|
||||
+10
-2
@@ -66,13 +66,21 @@ PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject, rend
|
||||
{
|
||||
this.context.globalAlpha = displayObject.worldAlpha;
|
||||
|
||||
// this.context.setTransform(
|
||||
// displayObject.worldTransform[0],
|
||||
// displayObject.worldTransform[3],
|
||||
// displayObject.worldTransform[1],
|
||||
// displayObject.worldTransform[4],
|
||||
// displayObject.worldTransform[2],
|
||||
// displayObject.worldTransform[5]);
|
||||
|
||||
this.context.setTransform(
|
||||
displayObject.worldTransform[0],
|
||||
displayObject.worldTransform[3],
|
||||
displayObject.worldTransform[1],
|
||||
displayObject.worldTransform[4],
|
||||
displayObject.worldTransform[2],
|
||||
displayObject.worldTransform[5]);
|
||||
Math.floor(displayObject.worldTransform[2]),
|
||||
Math.floor(displayObject.worldTransform[5]));
|
||||
|
||||
if (displayObject.texture.trimmed)
|
||||
{
|
||||
|
||||
+5
-4
@@ -284,7 +284,7 @@ Phaser.Game = function (width, height, renderer, parent, state, transparent, ant
|
||||
}
|
||||
|
||||
this.pendingStep = false;
|
||||
this.stepping = true;
|
||||
this.stepping = false;
|
||||
this.stepCount = 0;
|
||||
|
||||
return this;
|
||||
@@ -599,9 +599,9 @@ Phaser.Game.prototype = {
|
||||
this.input.update();
|
||||
this.tweens.update();
|
||||
this.sound.update();
|
||||
console.log('state update');
|
||||
// console.log('state update');
|
||||
this.state.update();
|
||||
console.log('world update');
|
||||
// console.log('world update');
|
||||
this.world.update();
|
||||
this.particles.update();
|
||||
this.plugins.update();
|
||||
@@ -635,7 +635,8 @@ Phaser.Game.prototype = {
|
||||
|
||||
this.pendingStep = false;
|
||||
this.stepCount++;
|
||||
console.log('--------- Game step', this.stepCount);
|
||||
console.log('');
|
||||
console.log('----------------------------- Game step', this.stepCount);
|
||||
|
||||
},
|
||||
|
||||
|
||||
@@ -143,6 +143,9 @@ Phaser.World.prototype.postUpdate = function () {
|
||||
}
|
||||
while (currentNode != this.game.stage._stage.last._iNext)
|
||||
}
|
||||
|
||||
this.camera.update();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+115
-167
@@ -188,11 +188,13 @@ Phaser.Physics.Arcade.prototype = {
|
||||
{
|
||||
body.blocked.left = true;
|
||||
part.pos.add(this._response.overlapV);
|
||||
console.log('World checkBounds Left', this._response.overlapV);
|
||||
}
|
||||
else if (this.worldRight && test(this.worldPolys[1], part, this._response))
|
||||
{
|
||||
body.blocked.right = true;
|
||||
part.pos.add(this._response.overlapV);
|
||||
console.log('World checkBounds Right', this._response.overlapV);
|
||||
}
|
||||
|
||||
this._response.clear();
|
||||
@@ -201,11 +203,13 @@ Phaser.Physics.Arcade.prototype = {
|
||||
{
|
||||
body.blocked.up = true;
|
||||
part.pos.add(this._response.overlapV);
|
||||
console.log('World checkBounds Up', this._response.overlapV);
|
||||
}
|
||||
else if (this.worldBottom && test(this.worldPolys[3], part, this._response))
|
||||
{
|
||||
body.blocked.down = true;
|
||||
part.pos.add(this._response.overlapV);
|
||||
console.log('World checkBounds Down', this._response.overlapV);
|
||||
}
|
||||
|
||||
},
|
||||
@@ -364,6 +368,11 @@ Phaser.Physics.Arcade.prototype = {
|
||||
// pos = pos + dt*(vel + temp/2)
|
||||
// vel = vel + temp
|
||||
|
||||
if (body.sprite.debug)
|
||||
{
|
||||
console.log('updateMotion: acx', body.acceleration.x, 'acy', body.acceleration.y, 'gravx', this._gravityX, 'gravy', this._gravityY, 'elapsed', this.game.time.physicsElapsed);
|
||||
}
|
||||
|
||||
this._p.setTo((body.acceleration.x + this._gravityX) * this.game.time.physicsElapsed, (body.acceleration.y + this._gravityY) * this.game.time.physicsElapsed);
|
||||
|
||||
return this._p;
|
||||
@@ -706,7 +715,9 @@ Phaser.Physics.Arcade.prototype = {
|
||||
*/
|
||||
collideSpriteVsTilemapLayer: function (sprite, tilemapLayer, collideCallback, processCallback, callbackContext) {
|
||||
|
||||
console.log('collideSpriteVsTilemapLayer x:', sprite.x, 'y:', sprite.y, 'body left:', sprite.body.left, 'right:', sprite.body.right);
|
||||
// At this stage the body.left value is WRONG (it's the old value)
|
||||
// console.log('collideSpriteVsTilemapLayer sx:', sprite.x, 'sy:', sprite.y, 'body left:', sprite.body.left, 'right:', sprite.body.right);
|
||||
console.log('collideSpriteVsTilemapLayer x:', sprite.body.x, 'y:', sprite.body.y, 'body left:', sprite.body.left, 'right:', sprite.body.right);
|
||||
|
||||
|
||||
this._mapData = tilemapLayer.getTiles(sprite.body.left, sprite.body.top, sprite.body.width, sprite.body.height, true);
|
||||
@@ -845,7 +856,7 @@ Phaser.Physics.Arcade.prototype = {
|
||||
/**
|
||||
* Performs a rect intersection test against the two objects.
|
||||
* Objects must expose properties: width, height, left, right, top, bottom.
|
||||
* @method Phaser.Physics.Arcade#intersects
|
||||
* @method Phaser.Physics.Arcade#tileIntersects
|
||||
* @param {object} body - The Body to test.
|
||||
* @param {object} tile - The Tile to test.
|
||||
* @returns {boolean} Returns true if the objects intersect, otherwise false.
|
||||
@@ -854,22 +865,30 @@ Phaser.Physics.Arcade.prototype = {
|
||||
|
||||
if (body.width <= 0 || body.height <= 0 || tile.width <= 0 || tile.height <= 0)
|
||||
{
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
|
||||
// console.log('body: ', body.left, body.top, body.right, body.bottom);
|
||||
// console.log('tile: ', tile.x, tile.y, tile.right, tile.bottom);
|
||||
|
||||
console.log('____ tileIntersects');
|
||||
console.log('body: ', body.left, body.top, body.right, body.bottom);
|
||||
console.log('tile: ', tile.x, tile.y, tile.right, tile.bottom);
|
||||
// console.log('intersect #1', body.right < tile.x, body.right, tile.x);
|
||||
// console.log('intersect #2', body.bottom < tile.y, body.bottom, tile.y);
|
||||
// console.log('intersect #3', body.left > tile.right, body.left, tile.right);
|
||||
// console.log('intersect #4', body.top > tile.bottom, body.top, tile.bottom);
|
||||
|
||||
// return !(a.right < b.x || a.bottom < b.y || a.x > b.right || a.y > b.bottom);
|
||||
if (!(body.right < tile.x || body.bottom < tile.y || body.left > tile.right || body.top > tile.bottom))
|
||||
{
|
||||
var out = [0,0,0,0];
|
||||
|
||||
result = !(body.right < tile.x || body.bottom < tile.y || body.left > tile.right || body.top > tile.bottom);
|
||||
out[0]= Math.max(body.left, tile.x); // x
|
||||
out[1] = Math.max(body.top, tile.y); // y
|
||||
out[2] = Math.min(body.right, tile.right) - out[0]; // width
|
||||
out[3] = Math.min(body.bottom, tile.bottom) - out[1]; // height
|
||||
|
||||
return result;
|
||||
return out;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
},
|
||||
|
||||
@@ -878,152 +897,51 @@ Phaser.Physics.Arcade.prototype = {
|
||||
* @method Phaser.Physics.Arcade#separateTiles
|
||||
* @param {Phaser.Physics.Arcade.Body} body - The Body object to separate.
|
||||
* @param {<Phaser.Tile>array} tiles - The array of tiles to collide against.
|
||||
* @returns {boolean} Returns true if the bodies were separated, otherwise false.
|
||||
* @returns {boolean} Returns true if the body was separated, otherwise false.
|
||||
*/
|
||||
separateTiles: function (body, tiles) {
|
||||
|
||||
// Can't separate two immovable objects (tiles are always immovable)
|
||||
if (body.immovable)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
body.overlapX = 0;
|
||||
body.overlapY = 0;
|
||||
console.log('!!! separateTiles', tiles);
|
||||
|
||||
var tile;
|
||||
var localOverlapX = 0;
|
||||
var localOverlapY = 0;
|
||||
var process = false;
|
||||
var result = false;
|
||||
|
||||
for (var i = 0; i < tiles.length; i++)
|
||||
{
|
||||
tile = tiles[i];
|
||||
|
||||
if (this.tileIntersects(body, tile))
|
||||
if (this.separateTile(body, tile))
|
||||
{
|
||||
// They overlap. Any custom callbacks?
|
||||
if (tile.tile.callback || tile.layer.callbacks[tile.tile.index])
|
||||
{
|
||||
// A local callback takes priority over a global callback.
|
||||
if (tile.tile.callback && tile.tile.callback.call(tile.tile.callbackContext, body.sprite, tile) === false)
|
||||
{
|
||||
// Is there a tile specific collision callback? If it returns true then we can carry on, otherwise we should abort.
|
||||
continue;
|
||||
}
|
||||
else if (tile.layer.callbacks[tile.tile.index] && tile.layer.callbacks[tile.tile.index].callback.call(tile.layer.callbacks[tile.tile.index].callbackContext, body.sprite, tile) === false)
|
||||
{
|
||||
// Is there a tile index collision callback? If it returns true then we can carry on, otherwise we should abort.
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (body.deltaX() < 0 && body.checkCollision.left && tile.tile.faceRight && !body.blocked.left)
|
||||
{
|
||||
// LEFT
|
||||
localOverlapX = body.left - tile.right;
|
||||
|
||||
console.log('STS left', localOverlapX, body.deltaX(), 'bt', body.left, tile.right);
|
||||
|
||||
if (localOverlapX >= body.deltaX())
|
||||
{
|
||||
body.blocked.left = true;
|
||||
body.touching.left = true;
|
||||
body.touching.none = false;
|
||||
process = true;
|
||||
}
|
||||
}
|
||||
else if (body.deltaX() > 0 && body.checkCollision.right && tile.tile.faceLeft && !body.blocked.right)
|
||||
{
|
||||
// RIGHT
|
||||
localOverlapX = body.right - tile.x;
|
||||
|
||||
console.log('STS right', localOverlapX, body.deltaX(), 'bt', body.right, tile.x);
|
||||
|
||||
// Distance check
|
||||
if (localOverlapX <= body.deltaX())
|
||||
{
|
||||
body.blocked.right = true;
|
||||
body.touching.right = true;
|
||||
body.touching.none = false;
|
||||
process = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (body.deltaY() < 0 && body.checkCollision.up && tile.tile.faceBottom && !body.blocked.up)
|
||||
{
|
||||
// UP
|
||||
localOverlapY = body.top - tile.bottom;
|
||||
|
||||
console.log('STS up', localOverlapY, body.deltaY(), 'bt', body.top, tile.bottom);
|
||||
|
||||
// Distance check
|
||||
if (localOverlapY >= body.deltaY())
|
||||
{
|
||||
body.blocked.up = true;
|
||||
body.touching.up = true;
|
||||
body.touching.none = false;
|
||||
process = true;
|
||||
}
|
||||
}
|
||||
else if (body.deltaY() > 0 && body.checkCollision.down && tile.tile.faceTop && !body.blocked.down)
|
||||
{
|
||||
// DOWN
|
||||
localOverlapY = body.bottom - tile.y;
|
||||
|
||||
console.log('STS down', localOverlapY, body.deltaY(), 'bt', body.bottom, tile.y);
|
||||
|
||||
if (localOverlapY <= body.deltaY())
|
||||
{
|
||||
body.blocked.down = true;
|
||||
body.touching.down = true;
|
||||
body.touching.none = false;
|
||||
process = true;
|
||||
}
|
||||
}
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (localOverlapX !== 0)
|
||||
{
|
||||
body.overlapX = localOverlapX;
|
||||
}
|
||||
|
||||
if (localOverlapY !== 0)
|
||||
{
|
||||
body.overlapY = localOverlapY;
|
||||
}
|
||||
|
||||
if (process)
|
||||
{
|
||||
return this.processTileSeparation(body);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return result;
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* The core separation function to separate a physics body and a tile.
|
||||
* @method Phaser.Physics.Arcade#separateTile
|
||||
* @param {Phaser.Physics.Arcade.Body} body1 - The Body object to separate.
|
||||
* @param {Phaser.Physics.Arcade.Body} body - The Body object to separate.
|
||||
* @param {Phaser.Tile} tile - The tile to collide against.
|
||||
* @returns {boolean} Returns true if the bodies were separated, otherwise false.
|
||||
* @returns {boolean} Returns true if the body was separated, otherwise false.
|
||||
*/
|
||||
separateTile: function (body, tile) {
|
||||
|
||||
// Can't separate two immovable objects (tiles are always immovable)
|
||||
if (body.immovable || this.tileIntersects(body, tile) === false)
|
||||
var intersection = this.tileIntersects(body, tile);
|
||||
|
||||
// If the intersection area is either entirely null, or has a width/height of zero, we bail out now
|
||||
if (intersection === null || intersection[2] === 0 || intersection[3] === 0)
|
||||
{
|
||||
console.log('fail');
|
||||
console.log('body: ', body.left, body.top, body.right, body.bottom);
|
||||
console.log('tile: ', tile.x, tile.y, tile.right, tile.bottom);
|
||||
console.log('Tile does not intersect body');
|
||||
return false;
|
||||
}
|
||||
|
||||
console.log('CHECK');
|
||||
console.log('*** separateTile', tile);
|
||||
console.log('intersection', intersection);
|
||||
|
||||
tile.tile.debug = true;
|
||||
|
||||
// They overlap. Any custom callbacks?
|
||||
if (tile.tile.callback || tile.layer.callbacks[tile.tile.index])
|
||||
@@ -1041,7 +959,6 @@ Phaser.Physics.Arcade.prototype = {
|
||||
}
|
||||
}
|
||||
|
||||
// use body var instead
|
||||
body.overlapX = 0;
|
||||
body.overlapY = 0;
|
||||
|
||||
@@ -1054,33 +971,30 @@ Phaser.Physics.Arcade.prototype = {
|
||||
|
||||
console.log('ST left', body.overlapX, body.deltaX(), 'bt', body.left, tile.right);
|
||||
|
||||
if (body.overlapX <= body.deltaX())
|
||||
if (body.overlapX < 0)
|
||||
{
|
||||
console.log('pass');
|
||||
body.blocked.left = true;
|
||||
body.touching.left = true;
|
||||
body.touching.none = false;
|
||||
process = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
body.overlapX = 0;
|
||||
}
|
||||
}
|
||||
else if (body.deltaX() > 0 && body.checkCollision.right && tile.tile.faceLeft && !body.blocked.right)
|
||||
{
|
||||
// RIGHT
|
||||
body.overlapX = body.right - tile.x;
|
||||
|
||||
console.log(tile);
|
||||
|
||||
console.log('ST right', body.overlapX, body.deltaX(), 'bt', body.right, tile.x);
|
||||
|
||||
// Distance check
|
||||
if (body.overlapX >= body.deltaX())
|
||||
if (body.overlapX > 0)
|
||||
{
|
||||
console.log('pass');
|
||||
body.blocked.right = true;
|
||||
body.touching.right = true;
|
||||
body.touching.none = false;
|
||||
process = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
body.overlapX = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (body.deltaY() < 0 && body.checkCollision.up && tile.tile.faceBottom && !body.blocked.up)
|
||||
@@ -1090,15 +1004,14 @@ Phaser.Physics.Arcade.prototype = {
|
||||
|
||||
console.log('ST up', body.overlapY, body.deltaY(), 'bt', body.top, tile.bottom);
|
||||
|
||||
// Distance check
|
||||
if (body.overlapY >= body.deltaY())
|
||||
if (body.overlapY < 0)
|
||||
{
|
||||
console.log('pass');
|
||||
body.blocked.up = true;
|
||||
body.touching.up = true;
|
||||
body.touching.none = false;
|
||||
process = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
body.overlapY = 0;
|
||||
}
|
||||
}
|
||||
else if (body.deltaY() > 0 && body.checkCollision.down && tile.tile.faceTop && !body.blocked.down)
|
||||
{
|
||||
@@ -1107,14 +1020,27 @@ Phaser.Physics.Arcade.prototype = {
|
||||
|
||||
console.log('ST down', body.overlapY, body.deltaY(), 'bt', body.bottom, tile.y);
|
||||
|
||||
if (body.overlapY <= body.deltaY())
|
||||
if (body.overlapY > 0)
|
||||
{
|
||||
console.log('pass');
|
||||
body.blocked.down = true;
|
||||
body.touching.down = true;
|
||||
body.touching.none = false;
|
||||
process = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
body.overlapY = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Only separate on the smallest of the two values if it's a single tile
|
||||
if (body.overlapX !== 0 && body.overlapY !== 0)
|
||||
{
|
||||
if (Math.abs(body.overlapX) > Math.abs(body.overlapY))
|
||||
{
|
||||
body.overlapX = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
body.overlapY = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Separate in a single sweep
|
||||
@@ -1138,30 +1064,52 @@ Phaser.Physics.Arcade.prototype = {
|
||||
*/
|
||||
processTileSeparation: function (body) {
|
||||
|
||||
// Swap for a hit tile?
|
||||
if (body.touching.none)
|
||||
{
|
||||
console.log('processTileSeparation QUIT');
|
||||
return false;
|
||||
}
|
||||
console.log('PRE processTileSeparation xy', body.x, body.y, 'left', body.left, 'right', body.right, 'up', body.up, 'down', body.down);
|
||||
|
||||
console.log('pre processTileSeparation', body.x, body.y);
|
||||
|
||||
if (body.touching.left || body.touching.right || body.blocked.left || body.blocked.right)
|
||||
if (body.overlapX < 0)
|
||||
{
|
||||
body.x -= body.overlapX;
|
||||
body.left -= body.overlapX;
|
||||
body.right -= body.overlapX;
|
||||
body.blocked.x = Math.floor(body.x);
|
||||
body.blocked.left = true;
|
||||
body.touching.left = true;
|
||||
body.touching.none = false;
|
||||
}
|
||||
else if (body.overlapX > 0)
|
||||
{
|
||||
body.x -= body.overlapX;
|
||||
body.left -= body.overlapX;
|
||||
body.right -= body.overlapX;
|
||||
body.blocked.x = Math.floor(body.x);
|
||||
body.blocked.right = true;
|
||||
body.touching.right = true;
|
||||
body.touching.none = false;
|
||||
}
|
||||
|
||||
if (body.touching.up || body.touching.down || body.blocked.up || body.blocked.down)
|
||||
if (body.overlapY < 0)
|
||||
{
|
||||
body.y -= body.overlapY;
|
||||
body.top -= body.overlapY;
|
||||
body.bottom -= body.overlapY;
|
||||
body.blocked.y = Math.floor(body.y);
|
||||
body.blocked.up = true;
|
||||
body.touching.up = true;
|
||||
body.touching.none = false;
|
||||
|
||||
}
|
||||
else if (body.overlapY > 0)
|
||||
{
|
||||
body.y -= body.overlapY;
|
||||
body.top -= body.overlapY;
|
||||
body.bottom -= body.overlapY;
|
||||
body.blocked.y = Math.floor(body.y);
|
||||
body.blocked.down = true;
|
||||
body.touching.down = true;
|
||||
body.touching.none = false;
|
||||
}
|
||||
|
||||
console.log('post processTileSeparation', body.x, body.y, body.right);
|
||||
|
||||
body.setBlockFlag(body.blocked.left, body.blocked.right, body.blocked.up, body.blocked.down, body.overlapX, body.overlapY);
|
||||
|
||||
// body.reboundCheck(true, true, true);
|
||||
console.log('POST processTileSeparation xy', body.x, body.y, 'left', body.left, 'right', body.right, 'up', body.up, 'down', body.down);
|
||||
|
||||
return true;
|
||||
|
||||
|
||||
+174
-137
@@ -161,6 +161,13 @@ Phaser.Physics.Arcade.Body = function (sprite) {
|
||||
*/
|
||||
this.touching = { none: true, up: false, down: false, left: false, right: false };
|
||||
|
||||
/**
|
||||
* This object is populated with boolean values when the Body collides with the World bounds or a Tile.
|
||||
* For example if blocked.up is true then the Body cannot move up.
|
||||
* @property {object} blocked - An object containing on which faces this Body is blocked from moving, if any.
|
||||
*/
|
||||
this.blocked = { x: 0, y: 0, up: false, down: false, left: false, right: false };
|
||||
|
||||
/**
|
||||
* @property {number} facing - A const reference to the direction the Body is traveling or facing.
|
||||
* @default
|
||||
@@ -233,13 +240,6 @@ Phaser.Physics.Arcade.Body = function (sprite) {
|
||||
*/
|
||||
this.collideWorldBounds = false;
|
||||
|
||||
/**
|
||||
* This object is populated with boolean values when the Body collides with the World bounds or a Tile.
|
||||
* For example if blocked.up is true then the Body cannot move up.
|
||||
* @property {object} blocked - An object containing on which faces this Body is blocked from moving, if any.
|
||||
*/
|
||||
this.blocked = { up: false, down: false, left: false, right: false };
|
||||
|
||||
/**
|
||||
* @property {Phaser.Physics.Arcade.RECT|Phaser.Physics.Arcade.CIRCLE} type - The type of SAT Shape.
|
||||
*/
|
||||
@@ -327,11 +327,13 @@ Phaser.Physics.Arcade.Body = function (sprite) {
|
||||
*/
|
||||
this._distances = [0, 0, 0, 0];
|
||||
|
||||
this.blockFlags = [0, 0, 0, 0];
|
||||
|
||||
this.overlapX = 0;
|
||||
this.overlapY = 0;
|
||||
|
||||
// Velocity cache
|
||||
this._vx = 0;
|
||||
this._vy = 0;
|
||||
|
||||
// Set-up the default shape
|
||||
this.setRectangle(sprite.width, sprite.height, 0, 0);
|
||||
|
||||
@@ -445,16 +447,13 @@ Phaser.Physics.Arcade.Body.prototype = {
|
||||
|
||||
this.preX = this.x;
|
||||
this.preY = this.y;
|
||||
|
||||
// this.x = this.sprite.center.x + this.offset.x;
|
||||
// this.y = this.sprite.center.y + this.offset.y;
|
||||
this.preRotation = this.rotation;
|
||||
|
||||
this.x = this.sprite.world.x + this.offset.x;
|
||||
this.y = this.sprite.world.y + this.offset.y;
|
||||
|
||||
if (this.allowRotation)
|
||||
{
|
||||
this.preRotation = this.rotation;
|
||||
this.rotation = this.sprite.rotation;
|
||||
|
||||
if (this.type !== Phaser.Physics.Arcade.CIRCLE && this.deltaZ() !== 0)
|
||||
@@ -463,39 +462,14 @@ Phaser.Physics.Arcade.Body.prototype = {
|
||||
}
|
||||
}
|
||||
|
||||
this.updateBounds();
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('Body postUpdate x:', this.x, 'y:', this.y, 'left:', this.left, 'right:', this.right);
|
||||
console.log('Body preUpdate x:', this.x, 'y:', this.y, 'left:', this.left, 'right:', this.right, 'WAS', this.preX, this.preY);
|
||||
console.log('Body preUpdate blocked:', this.blocked, this.blockFlags);
|
||||
console.log('Body preUpdate velocity:', this.velocity.x, this.velocity.y);
|
||||
}
|
||||
|
||||
|
||||
if (this.blocked.left && this.blockFlags[0] !== this.left)
|
||||
{
|
||||
this.blocked.left = false;
|
||||
}
|
||||
|
||||
if (this.blocked.right && this.blockFlags[1] !== this.right)
|
||||
{
|
||||
this.blocked.right = false;
|
||||
}
|
||||
|
||||
if (this.blocked.up && this.blockFlags[2] !== this.top)
|
||||
{
|
||||
this.blocked.up = false;
|
||||
}
|
||||
|
||||
if (this.blocked.down && this.blockFlags[3] !== this.bottom)
|
||||
{
|
||||
// console.log('reset down block flag', this.blockFlags[3], this.bottom);
|
||||
this.blocked.down = false;
|
||||
}
|
||||
|
||||
this.blocked.left = false;
|
||||
this.blocked.right = false;
|
||||
this.blocked.up = false;
|
||||
this.blocked.down = false;
|
||||
this.checkBlocked();
|
||||
|
||||
this.touching.none = true;
|
||||
this.touching.up = false;
|
||||
@@ -503,48 +477,60 @@ if (this.sprite.debug)
|
||||
this.touching.left = false;
|
||||
this.touching.right = false;
|
||||
|
||||
this.speed = Math.sqrt(this.velocity.x * this.velocity.x + this.velocity.y * this.velocity.y);
|
||||
this.angle = Math.atan2(this.velocity.y, this.velocity.x);
|
||||
|
||||
if (this.moves)
|
||||
{
|
||||
if (this._vx !== this.velocity.x || this._vy !== this.velocity.y)
|
||||
{
|
||||
// No need to re-calc these if they haven't changed
|
||||
this._vx = this.velocity.x;
|
||||
this._vy = this.velocity.y;
|
||||
this.speed = Math.sqrt(this.velocity.x * this.velocity.x + this.velocity.y * this.velocity.y);
|
||||
this.angle = Math.atan2(this.velocity.y, this.velocity.x);
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('Body preUpdate speed / angle adjust', this.speed, this.angle);
|
||||
}
|
||||
}
|
||||
|
||||
this.game.physics.checkBounds(this);
|
||||
|
||||
this.applyFriction();
|
||||
|
||||
this.integrateVelocity();
|
||||
|
||||
this.updateBounds();
|
||||
|
||||
this.checkBlocked();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.updateBounds();
|
||||
}
|
||||
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('Body preUpdate AFTER integration x:', this.x, 'y:', this.y, 'left:', this.left, 'right:', this.right);
|
||||
console.log('Body preUpdate velocity:', this.velocity.x, this.velocity.y);
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
|
||||
setBlockFlag: function (left, right, up, down, x, y) {
|
||||
checkBlocked: function () {
|
||||
|
||||
this.updateBounds();
|
||||
|
||||
if (left)
|
||||
if (this.blocked.left || this.blocked.right && (Math.floor(this.x) !== this.blocked.x || Math.floor(this.y) !== this.blocked.y))
|
||||
{
|
||||
this.blockFlags[0] = this.left;
|
||||
// this.blockFlags[0] = this.left + x;
|
||||
// console.log('left flag set to', this.blockFlags[0]);
|
||||
}
|
||||
else if (right)
|
||||
{
|
||||
this.blockFlags[1] = this.right;
|
||||
// this.blockFlags[1] = this.right + x;
|
||||
// console.log('right flag set to', this.blockFlags[1]);
|
||||
console.log('resetBlocked unlocked left + right');
|
||||
this.blocked.left = false;
|
||||
this.blocked.right = false;
|
||||
}
|
||||
|
||||
if (up)
|
||||
if (this.blocked.up || this.blocked.down && (this.x !== this.blocked.x || this.y !== this.blocked.y))
|
||||
{
|
||||
this.blockFlags[2] = this.top;
|
||||
// this.blockFlags[2] = this.top + y;
|
||||
// this.blockFlags[2] = this.top;
|
||||
// console.log('up flag set to', this.blockFlags[2]);
|
||||
}
|
||||
else if (down)
|
||||
{
|
||||
this.blockFlags[3] = this.bottom;
|
||||
// this.blockFlags[3] = this.bottom + y;
|
||||
// this.blockFlags[3] = this.bottom;
|
||||
// console.log('down flag set to', this.blockFlags[3]);
|
||||
console.log('resetBlocked unlocked up + down');
|
||||
this.blocked.up = false;
|
||||
this.blocked.down = false;
|
||||
}
|
||||
|
||||
},
|
||||
@@ -596,8 +582,20 @@ if (this.sprite.debug)
|
||||
this.speed = 0;
|
||||
}
|
||||
|
||||
this.velocity.x = Math.cos(this.angle) * this.speed;
|
||||
this.velocity.y = Math.sin(this.angle) * this.speed;
|
||||
// Don't bother if speed 0
|
||||
if (this.speed > 0)
|
||||
{
|
||||
this.velocity.x = Math.cos(this.angle) * this.speed;
|
||||
this.velocity.y = Math.sin(this.angle) * this.speed;
|
||||
|
||||
this.speed = Math.sqrt(this.velocity.x * this.velocity.x + this.velocity.y * this.velocity.y);
|
||||
this.angle = Math.atan2(this.velocity.y, this.velocity.x);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('Body applyFriction velocity:', this.velocity.x, this.velocity.y, 'speed', this.speed);
|
||||
}
|
||||
|
||||
},
|
||||
@@ -613,74 +611,116 @@ if (this.sprite.debug)
|
||||
*/
|
||||
reboundCheck: function (x, y, rebound) {
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('reboundCheck start', this.velocity.x, this.velocity.y);
|
||||
console.log('reBound blocked state', this.blocked);
|
||||
}
|
||||
|
||||
if (x)
|
||||
{
|
||||
if (rebound && (this.blocked.left || this.blocked.right))
|
||||
if (rebound && this.bounce.x !== 0 && (this.blocked.left || this.blocked.right))
|
||||
{
|
||||
this.velocity.x *= -this.bounce.x;
|
||||
this.angle = Math.atan2(this.velocity.y, this.velocity.x);
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('X rebound applied');
|
||||
}
|
||||
}
|
||||
|
||||
var gx = this.getTotalGravityX();
|
||||
|
||||
if (Math.abs(this.velocity.x) < this.minVelocity.x && (this.blocked.left && gx < 0 || this.blocked.right && gx > 0))
|
||||
if (this.bounce.x === 0 || Math.abs(this.velocity.x) < this.minVelocity.x)
|
||||
{
|
||||
this.velocity.x = 0;
|
||||
var gx = this.getUpwardForce();
|
||||
|
||||
if ((this.blocked.left && (gx < 0 || this.velocity.x < 0)) || (this.blocked.right && (gx > 0 || this.velocity.x > 0)))
|
||||
{
|
||||
this.velocity.x = 0;
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('reboundCheck X zeroed');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('reboundCheck X', this.velocity.x, 'gravity', gx);
|
||||
}
|
||||
}
|
||||
|
||||
if (y)
|
||||
{
|
||||
if (rebound && this.bounce.y && (this.blocked.up || this.blocked.down))
|
||||
if (rebound && this.bounce.y !== 0 && (this.blocked.up || this.blocked.down))
|
||||
{
|
||||
this.velocity.y *= -this.bounce.y;
|
||||
this.angle = Math.atan2(this.velocity.y, this.velocity.x);
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('Y rebound applied');
|
||||
}
|
||||
}
|
||||
|
||||
var gy = this.getTotalGravityY();
|
||||
|
||||
if (Math.abs(this.velocity.y) < this.minVelocity.y && (this.blocked.up && gy < 0 || this.blocked.down && gy > 0))
|
||||
if (this.bounce.y === 0 || Math.abs(this.velocity.y) < this.minVelocity.y)
|
||||
{
|
||||
this.velocity.y = 0;
|
||||
var gy = this.getDownwardForce();
|
||||
|
||||
if ((this.blocked.up && (gy < 0 || this.velocity.y < 0)) || (this.blocked.down && (gy > 0 || this.velocity.y > 0)))
|
||||
{
|
||||
this.velocity.y = 0;
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('reboundCheck Y zeroed');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('reboundCheck Y', this.velocity.y, 'gravity', gy);
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the total gravity to be applied on the X axis.
|
||||
* Gets the total force being applied on the X axis, including gravity and velocity.
|
||||
*
|
||||
* @method Phaser.Physics.Arcade#getTotalGravityX
|
||||
* @protected
|
||||
* @return {number} The total gravity to be applied on the X axis.
|
||||
* @method Phaser.Physics.Arcade#getUpwardForce
|
||||
* @return {number} The total force being applied on the X axis.
|
||||
*/
|
||||
getTotalGravityX: function () {
|
||||
getUpwardForce: function () {
|
||||
|
||||
if (this.allowGravity)
|
||||
{
|
||||
return this.gravity.x + this.game.physics.gravity.x;
|
||||
return this.gravity.x + this.game.physics.gravity.x + this.velocity.x;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.gravity.x;
|
||||
return this.gravity.x + this.velocity.x;
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the total gravity to be applied on the Y axis.
|
||||
* Gets the total force being applied on the X axis, including gravity and velocity.
|
||||
*
|
||||
* @method Phaser.Physics.Arcade#getTotalGravityY
|
||||
* @protected
|
||||
* @return {number} The total gravity to be applied on the Y axis.
|
||||
* @method Phaser.Physics.Arcade#getDownwardForce
|
||||
* @return {number} The total force being applied on the Y axis.
|
||||
*/
|
||||
getTotalGravityY: function () {
|
||||
getDownwardForce: function () {
|
||||
|
||||
if (this.allowGravity)
|
||||
{
|
||||
return this.gravity.y + this.game.physics.gravity.y;
|
||||
return this.gravity.y + this.game.physics.gravity.y + this.velocity.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.gravity.y;
|
||||
return this.gravity.y + this.velocity.y;
|
||||
}
|
||||
|
||||
},
|
||||
@@ -820,6 +860,8 @@ if (this.sprite.debug)
|
||||
body.velocity.y = nv2;
|
||||
}
|
||||
|
||||
// update speed / angle?
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -833,6 +875,9 @@ if (this.sprite.debug)
|
||||
|
||||
this.velocity.x = body.velocity.x - this.velocity.x * this.bounce.x;
|
||||
this.velocity.y = body.velocity.y - this.velocity.y * this.bounce.y;
|
||||
|
||||
this.angle = Math.atan2(this.velocity.y, this.velocity.x);
|
||||
|
||||
this.reboundCheck(true, true, false);
|
||||
|
||||
},
|
||||
@@ -1134,6 +1179,11 @@ if (this.sprite.debug)
|
||||
this._dx = this.game.time.physicsElapsed * (this.velocity.x + this._temp.x / 2);
|
||||
this._dy = this.game.time.physicsElapsed * (this.velocity.y + this._temp.y / 2);
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('integrateVelocity TEMP:', this._temp.x, this._temp.y);
|
||||
}
|
||||
|
||||
// positive = RIGHT / DOWN
|
||||
// negative = LEFT / UP
|
||||
|
||||
@@ -1141,14 +1191,34 @@ if (this.sprite.debug)
|
||||
{
|
||||
this.x += this._dx;
|
||||
this.velocity.x += this._temp.x;
|
||||
console.log('x added', this._dx);
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('integrateVelocity x added', this._dx, this.x);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('integrateVelocity x failed or zero, blocked left/right', this._dx);
|
||||
}
|
||||
}
|
||||
|
||||
if ((this._dy < 0 && !this.blocked.up && !this.touching.up) || (this._dy > 0 && !this.blocked.down && !this.touching.down))
|
||||
{
|
||||
this.y += this._dy;
|
||||
this.velocity.y += this._temp.y;
|
||||
console.log('y added', this._dy);
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('integrateVelocity y added', this._dy, this.y);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('integrateVelocity y failed or zero, blocked up/down', this._dy);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.velocity.x > this.maxVelocity.x)
|
||||
@@ -1183,8 +1253,6 @@ if (this.sprite.debug)
|
||||
{
|
||||
this.reboundCheck(true, true, true);
|
||||
|
||||
this.integrateVelocity();
|
||||
|
||||
this.game.physics.checkBounds(this);
|
||||
|
||||
if (this.deltaX() < 0)
|
||||
@@ -1205,44 +1273,27 @@ if (this.sprite.debug)
|
||||
this.facing = Phaser.DOWN;
|
||||
}
|
||||
|
||||
this.updateBounds();
|
||||
// this.updateBounds();
|
||||
|
||||
if (this.sprite.debug)
|
||||
{
|
||||
console.log('Body postUpdate x:', this.x, 'y:', this.y, 'left:', this.left, 'right:', this.right);
|
||||
console.log('Body postUpdate x:', this.x, 'y:', this.y, 'left:', this.left, 'right:', this.right, 'WAS', this.preX, this.preY);
|
||||
console.log('Body postUpdate blocked:', this.blocked, this.blockFlags);
|
||||
console.log('Body postUpdate velocity:', this.velocity.x, this.velocity.y);
|
||||
}
|
||||
|
||||
// this.sprite.x = this.x + (this.sprite.x - this.sprite.center.x) - this.offset.x;
|
||||
// this.sprite.y = this.y + (this.sprite.y - this.sprite.center.y) - this.offset.y;
|
||||
|
||||
if (this.sprite.name === 'mushroom')
|
||||
{
|
||||
// console.log('old x', this.preX, 'new x', this.x, 'delta', this.deltaX());
|
||||
// console.log('old y', this.preY, 'new y', this.y);
|
||||
}
|
||||
|
||||
this.sprite.x = this.x - this.offset.x;
|
||||
this.sprite.y = this.y - this.offset.y;
|
||||
this.sprite.worldTransform[2] = this.x - this.offset.x;
|
||||
this.sprite.worldTransform[5] = this.y - this.offset.y;
|
||||
|
||||
|
||||
|
||||
// this.world.setTo(this.game.camera.x + this.worldTransform[2], this.game.camera.y + this.worldTransform[5]);
|
||||
|
||||
|
||||
// this.sprite.x = this.x + (this.sprite.world.x - this.game.camera.x) - this.offset.x;
|
||||
// this.sprite.y = this.y + (this.sprite.world.y - this.game.camera.y) - this.offset.y;
|
||||
|
||||
// this.world.setTo(this.game.camera.x + this.worldTransform[2], this.game.camera.y + this.worldTransform[5]);
|
||||
|
||||
|
||||
if (this.allowRotation)
|
||||
{
|
||||
// this.sprite.rotation = this.rotation;
|
||||
// this.sprite.angle += this.deltaZ();
|
||||
// this.sprite.angle = this.angle;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
@@ -1268,6 +1319,7 @@ if (this.sprite.debug)
|
||||
this.mass = 1;
|
||||
this.friction = 0.1;
|
||||
this.checkCollision = { none: false, any: true, up: true, down: true, left: true, right: true };
|
||||
this.blocked
|
||||
|
||||
},
|
||||
|
||||
@@ -1410,18 +1462,3 @@ Object.defineProperty(Phaser.Physics.Arcade.Body.prototype, "y", {
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* @name Phaser.Physics.Arcade.Body#movingLeft
|
||||
* @property {number} movingLeft
|
||||
*/
|
||||
Object.defineProperty(Phaser.Physics.Arcade.Body.prototype, "movingLeft", {
|
||||
|
||||
/**
|
||||
* @method movingLeft
|
||||
* @return {boolean}
|
||||
*/
|
||||
get: function () {
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@@ -131,6 +131,8 @@ Phaser.Tile = function (layer, index, x, y, width, height) {
|
||||
*/
|
||||
this.callbackContext = this;
|
||||
|
||||
this.debug = false;
|
||||
|
||||
};
|
||||
|
||||
Phaser.Tile.prototype = {
|
||||
|
||||
@@ -482,12 +482,16 @@ Phaser.TilemapLayer.prototype.getTiles = function (x, y, width, height, collides
|
||||
height = this.layer.heightInPixels;
|
||||
}
|
||||
|
||||
// console.log('getTiles', x, y, width, height, collides);
|
||||
|
||||
// Convert the pixel values into tile coordinates
|
||||
this._tx = this.game.math.snapToFloor(x, this._cw) / this._cw;
|
||||
this._ty = this.game.math.snapToFloor(y, this._ch) / this._ch;
|
||||
this._tw = (this.game.math.snapToCeil(width, this._cw) + this._cw) / this._cw;
|
||||
this._th = (this.game.math.snapToCeil(height, this._ch) + this._ch) / this._ch;
|
||||
|
||||
// console.log('getTiles snapped', this._tx, this._ty, this._tw, this._th);
|
||||
|
||||
// This should apply the layer x/y here
|
||||
this._results.length = 0;
|
||||
|
||||
@@ -526,6 +530,8 @@ Phaser.TilemapLayer.prototype.getTiles = function (x, y, width, height, collides
|
||||
}
|
||||
}
|
||||
|
||||
// console.log('getTiles results', this._results);
|
||||
|
||||
return this._results;
|
||||
|
||||
}
|
||||
@@ -708,15 +714,15 @@ Phaser.TilemapLayer.prototype.updateMax = function () {
|
||||
*/
|
||||
Phaser.TilemapLayer.prototype.render = function () {
|
||||
|
||||
if (this.layer.dirty)
|
||||
{
|
||||
this.dirty = true;
|
||||
}
|
||||
// if (this.layer.dirty)
|
||||
// {
|
||||
// this.dirty = true;
|
||||
// }
|
||||
|
||||
if (!this.dirty || !this.visible)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// if (!this.dirty || !this.visible)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
|
||||
this._prevX = this._dx;
|
||||
this._prevY = this._dy;
|
||||
@@ -790,6 +796,12 @@ Phaser.TilemapLayer.prototype.render = function () {
|
||||
this.map.tileHeight
|
||||
);
|
||||
}
|
||||
|
||||
if (tile.debug)
|
||||
{
|
||||
this.context.fillStyle = 'rgba(0,255,0,0.5)';
|
||||
this.context.fillRect(Math.floor(this._tx), Math.floor(this._ty), this.map.tileWidth, this.map.tileHeight);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+3
-2
@@ -640,9 +640,10 @@ Phaser.Utils.Debug.prototype = {
|
||||
color = color || 'rgb(255, 255, 255)';
|
||||
|
||||
this.start(0, 0, color);
|
||||
this.context.lineWidth = 1;
|
||||
this.context.beginPath();
|
||||
this.context.moveTo(line.start.x, line.start.y);
|
||||
this.context.lineTo(line.end.x, line.end.y);
|
||||
this.context.moveTo(line.start.x + 0.5, line.start.y + 0.5);
|
||||
this.context.lineTo(line.end.x + 0.5, line.end.y + 0.5);
|
||||
this.context.closePath();
|
||||
this.context.stroke();
|
||||
this.stop();
|
||||
|
||||
Reference in New Issue
Block a user