mirror of
https://github.com/wassname/phaser.git
synced 2026-07-07 00:06:37 +08:00
Tilemap.createCollisionObjects will parse Tiled data for objectgroups and convert polyline instances into physics objects you can collide with in the world.
After defining tiles that collide on a Tilemap, you need to call Tilemap.generateCollisionData(layer) to populate the physics world with the data required. Debug.renderPhysicsBody updated to take camera location and body rotation into account. Body movement functions put back to velocity :) Updated to latest dev version of pixi and latest p2.js Updated docs
This commit is contained in:
+102
-13
@@ -58,6 +58,10 @@
|
||||
<a href="Phaser.BitmapData.html">BitmapData</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Phaser.BitmapFont.html">BitmapFont</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Phaser.BitmapText.html">BitmapText</a>
|
||||
</li>
|
||||
@@ -90,10 +94,6 @@
|
||||
<a href="Phaser.Device.html">Device</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Phaser.DOMSprite.html">DOMSprite</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Phaser.Easing.html">Easing</a>
|
||||
</li>
|
||||
@@ -142,6 +142,10 @@
|
||||
<a href="Phaser.Easing.Sinusoidal.html">Sinusoidal</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Phaser.Ellipse.html">Ellipse</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Phaser.Events.html">Events</a>
|
||||
</li>
|
||||
@@ -250,10 +254,6 @@
|
||||
<a href="Phaser.Physics.Arcade.html">Arcade</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Phaser.Physics.Arcade.Body.html">Body</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Phaser.Plugin.html">Plugin</a>
|
||||
</li>
|
||||
@@ -314,6 +314,10 @@
|
||||
<a href="Phaser.Sprite.html">Sprite</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Phaser.SpriteBatch.html">SpriteBatch</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Phaser.Stage.html">Stage</a>
|
||||
</li>
|
||||
@@ -412,6 +416,10 @@
|
||||
<a href="global.html#canUseNewCanvasBlendModes">canUseNewCanvasBlendModes</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="global.html#getBounds">getBounds</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="global.html#getNextPowerOfTwo">getNextPowerOfTwo</a>
|
||||
</li>
|
||||
@@ -540,7 +548,7 @@ Phaser.TilemapParser = {
|
||||
}
|
||||
else
|
||||
{
|
||||
return { layers: [], objects: [], images: [], tilesets: [] };
|
||||
return this.getEmptyData();
|
||||
}
|
||||
|
||||
},
|
||||
@@ -584,6 +592,58 @@ Phaser.TilemapParser = {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns an empty map data object.
|
||||
* @method Phaser.TilemapParser.getEmptyData
|
||||
* @return {object} Generated map data.
|
||||
*/
|
||||
getEmptyData: function () {
|
||||
|
||||
var map = {};
|
||||
|
||||
map.width = 0;
|
||||
map.height = 0;
|
||||
map.tileWidth = 0;
|
||||
map.tileHeight = 0;
|
||||
map.orientation = 'orthogonal';
|
||||
map.version = '1';
|
||||
map.properties = {};
|
||||
map.widthInPixels = 0;
|
||||
map.heightInPixels = 0;
|
||||
|
||||
var layers = [];
|
||||
|
||||
var layer = {
|
||||
|
||||
name: 'layer',
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: 0,
|
||||
height: 0,
|
||||
widthInPixels: 0,
|
||||
heightInPixels: 0,
|
||||
alpha: 1,
|
||||
visible: true,
|
||||
properties: {},
|
||||
indexes: [],
|
||||
callbacks: [],
|
||||
data: []
|
||||
|
||||
};
|
||||
|
||||
layers.push(layer);
|
||||
|
||||
map.layers = layers;
|
||||
map.images = [];
|
||||
map.objects = {};
|
||||
map.collision = {};
|
||||
map.tilesets = [];
|
||||
map.tiles = [];
|
||||
|
||||
return map;
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Parses a Tiled JSON file into valid map data.
|
||||
* @method Phaser.TilemapParser.parseJSON
|
||||
@@ -634,7 +694,8 @@ Phaser.TilemapParser = {
|
||||
visible: json.layers[i].visible,
|
||||
properties: {},
|
||||
indexes: [],
|
||||
callbacks: []
|
||||
callbacks: [],
|
||||
bodies: []
|
||||
|
||||
};
|
||||
|
||||
@@ -716,8 +777,9 @@ Phaser.TilemapParser = {
|
||||
|
||||
map.images = images;
|
||||
|
||||
// Objects
|
||||
// Objects & Collision Data (polylines, etc)
|
||||
var objects = {};
|
||||
var collision = {};
|
||||
|
||||
for (var i = 0; i < json.layers.length; i++)
|
||||
{
|
||||
@@ -727,10 +789,11 @@ Phaser.TilemapParser = {
|
||||
}
|
||||
|
||||
objects[json.layers[i].name] = [];
|
||||
collision[json.layers[i].name] = [];
|
||||
|
||||
for (var v = 0, len = json.layers[i].objects.length; v < len; v++)
|
||||
{
|
||||
// For now we'll just support object tiles
|
||||
// Object Tiles
|
||||
if (json.layers[i].objects[v].gid)
|
||||
{
|
||||
var object = {
|
||||
@@ -746,11 +809,37 @@ Phaser.TilemapParser = {
|
||||
|
||||
objects[json.layers[i].name].push(object);
|
||||
}
|
||||
else if (json.layers[i].objects[v].polyline)
|
||||
{
|
||||
var object = {
|
||||
|
||||
name: json.layers[i].objects[v].name,
|
||||
x: json.layers[i].objects[v].x,
|
||||
y: json.layers[i].objects[v].y,
|
||||
width: json.layers[i].objects[v].width,
|
||||
height: json.layers[i].objects[v].height,
|
||||
visible: json.layers[i].objects[v].visible,
|
||||
properties: json.layers[i].objects[v].properties
|
||||
|
||||
};
|
||||
|
||||
object.polyline = [];
|
||||
|
||||
// Parse the polyline into an array
|
||||
for (var p = 0; p < json.layers[i].objects[v].polyline.length; p++)
|
||||
{
|
||||
object.polyline.push([ json.layers[i].objects[v].polyline[p].x, json.layers[i].objects[v].polyline[p].y ]);
|
||||
}
|
||||
|
||||
collision[json.layers[i].name].push(object);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
map.objects = objects;
|
||||
map.collision = collision;
|
||||
|
||||
// Tilesets
|
||||
var tilesets = [];
|
||||
@@ -848,7 +937,7 @@ Phaser.TilemapParser = {
|
||||
|
||||
<span class="jsdoc-message">
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-dev</a>
|
||||
on Sat Feb 08 2014 07:19:40 GMT-0000 (GMT) using the <a href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
|
||||
on Tue Feb 18 2014 03:01:17 GMT-0000 (GMT) using the <a href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
|
||||
</span>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user