We publish a new Developers Log in every issue of Phaser World. It is then added to this site during the following week.
Subscribe to the newsletter to read the Dev Logs first. Dev Logs prior to 45 cover our work on Phaser 2, so are omitted here for clarity. If you'd like to read them please browse the Newsletter Back Issues archives.
Please join up!Phaser 3 Dispatching Events
Phaser 3 Dev Logs. Plus details about Arcade Physics 2 and Phaser 3D. Animation tutorial, drag zones and more.
Download details, part one of a migration guide and a tutorial on Input Events. Sound API updates and work on rendering displays. Sprite3D and Camera3D demos. Phaser 4 Announcement and a catch-up on Phaser 3.
Details about the 3. Details about Phaser CE 2. Phaser is 5 years old and we look back on what that means and where we're going. We reach 24k stars on GitHub, Arcade Physics gets updated, read about the new overlapTiles feature and the virtual joystick plugin.
Work on Phaser 3. This week we discuss all the work that is taking place on the documentation and new types. All about the 3. All about the release of Phaser 3. Details about Fullscreen support, the new shapshot features, changes to the Input event system and 3. Learn about the new Event system within V3 and what this means for the documentation and IDE support. A deep dive into how the new Phaser 3 Scale Manager is being built, with examples, code and game configs. How a multi-scene drag bug was fixed and a tutorial on moving and stopping physics objects.
Details all of the changes to the input system in the up-coming 3. The Doc Jam continues, Spine development updates, dealing with performance and accessing Matter directly. Phaser Doc Jam Update, 3. Phaser 3. All about the roadmap for the forthcoming releases and the new Shape Game Object. A comprehensive guide on creating custom builds of Phaser 3. Render Texture overhaul, new Crop support and Camera Filters. Redevelopment of the Flat Tint Pipeline and the introduction of textured Graphics.
Phaser releases, 3. The second part of the huge Scenes tutorial and the new 3. An extensive look at Containers, docs and other recent updates. Phaser 3 is released! The Phaser 3 release date and part two of the Tilemap Physics updates. Beta 19 is out, Tilemaps get full physics collision, Sound goes legacy and we prepare for release.A configuration object.
Class: Phaser.Group - 2.3.0
Union of the physics. Sets the acceleration. Note: The game object does not continuously track the target. If the target changes location during transit the game object will not modify its course. Note: The game object doesn't stop moving once it reaches the destination coordinates. The angle in radians that the object should be visually set to in order to match its new velocity. If a targets argument is passed, this method finds the closest of those. If two or more targets are the exact same distance from the source point, only the first target is returned.
Any object with public x and y properties, such as a Game Object or Geometry object. Performs a collision check and separation between the two physics enabled objects given, which can be single Game Objects, arrays of Game Objects, Physics Groups, arrays of Physics Groups or normal Groups.
If two Groups or arrays are passed, each member of one will be tested against each member of the other.
If only one Group is passed as object1each member of the Group will be collided against the other members. If only one Array is passed, the array is iterated and every element in it is tested against the others. Two callbacks can be provided. The collideCallback is invoked if a collision occurs and the two colliding objects are passed to it. Arcade Physics uses the Projection Method of collision resolution and separation.
While it's fast and suitable for 'arcade' style games it lacks stability when multiple objects are in close proximity or resting upon each other. The separation that stops two objects penetrating may create a new penetration against a different object. If you require a high level of stability please consider using an alternative physics system, such as Matter.
An optional callback function that lets you perform additional checks against the two objects if they collide. If this is set then collideCallback will only be called if this callback returns true.
This advanced method is specifically for testing for collision between a single Sprite and an array of Tile objects. You should generally use the collide method instead, with a Sprite vs.
This method is offered for those who would like to check for collision with specific Tiles in a layer, without having to set any collision attributes on the tiles in question. This allows you to perform quick dynamic collisions on small sets of Tiles. As such, no culling or checks are made to the array of Tiles given to this method, you should filter them before passing them to this method. Important: Use of this method skips the interesting faces system that Tilemap Layers use.
This means if you have say a row or column of tiles, and you jump into, or walk over them, it's possible to get stuck on the edges of the tiles as the interesting face calculations are skipped.
However, for quick-fire small collision set tests on dynamic maps, this method can prove very useful. True if any objects overlap with overlapOnly ; or true if any overlapping objects were separated. The Scene that owns this plugin is being destroyed. We need to shutdown and then kill off all external references. If a targets argument is passed, this method finds the farthest of those. If you specify a maxTime then it will adjust the speed over-writing what you set so it arrives at the destination in that number of seconds.
Timings are approximate due to the way browser timers work. Note: The display object does not continuously track the target. If the target changes location during transit the display object will not modify its course. Note: The display object doesn't stop moving once it reaches the destination coordinates.
Note: Doesn't take into account acceleration, maxVelocity or drag if you've set drag or acceleration too high this object may not move at all.The Scene to which this Game Object belongs. A Game Object can only belong to one Scene at a time. The active state of this Game Object. An active object is one which is having its logic and internal systems updated. The alpha value starting from the bottom-left of the Game Object.
This value is interpolated from the corner to the center of the Game Object. The alpha value starting from the bottom-right of the Game Object. The alpha value starting from the top-left of the Game Object. The alpha value starting from the top-right of the Game Object.
This can be a const, such as Phaser. Blend modes have different effects under Canvas and WebGL, and from browser to browser, depending on support. Blend Modes also cause a WebGL batch flush should it encounter a new blend mode.
For these reasons try to be careful about the construction of your Scene and the frequency of which blend modes are used. If this Game Object is enabled for physics then this property will contain a reference to a Physics Body.
A bitmask that controls if this Game Object is drawn by a Camera or not. Not usually set directly, instead call Camera. A Data Manager. Automatically created if you use getData or setData or setDataEnabled. The depth is also known as the 'z-index' in some environments, and allows you to change the rendering order of Game Objects, without actually moving their position in the display list.
The depth starts from zero the default value and increases from that point. A Game Object with a higher depth value will always render in front of one with a lower value. The horizontal display origin of this Game Object. The origin is a normalized value between 0 and 1.
The displayOrigin is a pixel value, based on the size of the Game Object combined with the origin. The vertical display origin of this Game Object. A Game Object that is flipped horizontally will render inversed on the horizontal axis.
Flipping always takes place from the middle of the texture and does not impact the scale value. If this Game Object has a physics body, it will not change the body. This is a rendering toggle only. A Game Object that is flipped vertically will render inversed on the vertical axis i.
Changing this value will not change the size that the Game Object is rendered in-game. For that you need to either set the scale of the Game Object setScale or use the displayHeight property.Version: 2.
Section: TopProperties or Methods. A Group is a container for display objects including Sprites and Images. The parent Group or other DisplayObject that this group will be added to. Change the body type with physicsBodyType. The physics body type to use when physics bodies are automatically added.
See physicsBodyType for values. Set if this display object is cached as a bitmap. This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects.
To remove simply set this property to 'null'. If the parent of this Group is also fixedToCamera then the offset here is in addition to that and should typically be disabled. The type of objects that will be created when using create or createMultiple. Any object may be used but it should extend either Sprite or Image and accept the same constructor arguments: when a new object is created it is passed the following parameters to its constructor: game, x, y, key, frame.
The cursor is a way to iterate through the children in a Group using next and previous. If true all Sprites created by, or added to this group, will have a physics body enabled on them. The default body type is controlled with physicsBodyType. If true when a physics body is created via enableBody it will create a physics debug object as well.
The area the filter is applied to like the hitArea this is used as more of an optimisation rather than figuring out the dimensions of the displayObject each frame you can set this rectangle. Sets the filters for the displayObject. To remove filters simply set this property to 'null'.So finally Phaser 3 is going to provide containers?
At the same time, we need something like containers or bones, something like a transformation tree. In this Phaser 3 google group I mentioned it:. So, if now containers are introduced, how much is it going to affect the internal Phaser 3 implementation?
Is it going to affect performance? Why are we considering containers again? I think now we only need a better API to support transform tree, and that does not require any changes to the internal implementation.
If you ever used impact. We have to do the same thing right now in Phaser3 due to the lack of such functionality. The idea of joint sounds great, further more it may even have configs to support syncing of alpha, tint and other visual properties.
That concept looks just like the joint you proposed as. To be clear: we're not changing how the display list works in v3.
Containers will be top-level objects that immediately update the properties of their children you will not be able to nest containerswhich gets around the issue of bounds calculations, branching, etc.
I've literally just implemented a fully responsive UI system into a v3 game using its own Scene, and it's so much easier than even Containers would make it.
If containers can't contain other containers, I think I can adjust these slots to be v3 Groups, then call Group. In recent voting for next feature to be implemented, I voted for Containers. I thought it will be possible to nest them Did I make it right, that for now all objects in fact have only their world space position and rotation?
I think that some way to build object hierarchies and place some objects into local space of other objects is essential for making games. Imagine this example: some sphere orbiting main character. In sphere update I will care only about orbiting position. Following player when he moves is provided by hierarchical transforms.
How can I do thing like this in Phaser v3? Does it mean, I have to check in sphere update every frame new position of character and update sphere position to it? Making this about convenience, not performance. Thanks for answer.The Phaser Newsletter contains new tutorials every issue - Subscribe here. Container Back to game-objects. Add Emitter To Container.
Add Sprite To Container. Add Tilesprite To Container. Animation Test. Arcade Physics Body Test. Arcade Physics Sprite Test.
Camera Transform Test. Child Blend Mode. Child Order. Container Alpha. Container And Camera Zoom. Container And Child Input. Container As Mask. Container Depth. Container Hitarea. Container Hitarea From Size. Container Ik. Container Input Test. Container Mask. Container Scrollfactor.
Create Container. Draggable Container. Get Bounds Test 1. Impact Physics Body Test. Impact Physics Sprite Test. Input Overlap Test. Matter Physics Body Test. Matter Physics Body Test Camera. Matter Physics Sprite Test. Multi Camera Input Test. Multi Container Depth Test.
Multiple Non Exclusive Containers. Nested Container Input Test. Nested Container Visibility. Nested Get Bounds Test. Nested Input Test.The Scene to which this Game Object belongs. A Game Object can only belong to one Scene at a time.
The active state of this Game Object. An active object is one which is having its logic and internal systems updated. This can be a const, such as Phaser. Blend modes have different effects under Canvas and WebGL, and from browser to browser, depending on support. Blend Modes also cause a WebGL batch flush should it encounter a new blend mode.
For these reasons try to be careful about the construction of your Scene and the frequency of which blend modes are used. If this Game Object is enabled for physics then this property will contain a reference to a Physics Body. A bitmask that controls if this Game Object is drawn by a Camera or not. Not usually set directly, instead call Camera. A Data Manager. Automatically created if you use getData or setData or setDataEnabled.
The depth is also known as the 'z-index' in some environments, and allows you to change the rendering order of Game Objects, without actually moving their position in the display list.
The depth starts from zero the default value and increases from that point. A Game Object with a higher depth value will always render in front of one with a lower value. Internal value to allow Containers to be used for input and physics.
Do not change this value. It has no effect other than to break things. The default is true which means a child added to this Container cannot belong in another Container, which includes the Scene display list. If you disable this then this Container will no longer exclusively manage its children.
This allows you to create all kinds of interesting graphical effects, such as replicating Game Objects without reparenting them all over the Scene. However, doing so will prevent children from receiving any kind of input event or have their physics bodies work by default, as they're no longer a single entity on the display list, but are being replicated where-ever this Container is. You can move the cursor by calling Container.
Changing this value will not change the size that the Game Object is rendered in-game. For that you need to either set the scale of the Game Object setScale or use the displayHeight property. This Game Object will ignore all calls made to its destroy method if this flag is set to true. This includes calls that may come from a Group, Container or the Scene itself.