Added Sprite.fixedToCamera, fixed Angular Velocity and Acceleration, fixed jittery Camera, added skipQuadTree flag and created lots more examples.

This commit is contained in:
photonstorm
2013-10-08 00:58:20 +01:00
parent 1bc6ac25fa
commit c307f79102
20 changed files with 444 additions and 61 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 558 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

+12 -2
View File
@@ -8,7 +8,7 @@
var game = new Phaser.Game(800, 600, Phaser.CANVAS, '', { preload: preload, create: create, update: update });
var game = new Phaser.Game(800, 600, Phaser.CANVAS, '', { preload: preload, create: create, update: update, render: render });
var baddie,
keys=Phaser.Keyboard;
@@ -28,7 +28,7 @@
game.add.tileSprite(0, 0, 2000, 2000, 'background');
game.world.setBounds(1400,1400);
game.world.setBounds(0, 0, 1400,1400);
for(var i=0,nb=10;i<nb;i++){
@@ -68,6 +68,16 @@
}
function render() {
game.debug.renderCameraInfo(game.camera, 32, 32);
// game.debug.renderSpriteInfo(d, 32, 200);
// game.debug.renderWorldTransformInfo(d, 32, 200);
// game.debug.renderLocalTransformInfo(d, 32, 400);
// game.debug.renderSpriteCorners(d, false, true);
}
</script>
+90
View File
@@ -0,0 +1,90 @@
<?php
$title = "Cursor Key Movement";
require('../head.php');
?>
<script type="text/javascript">
window.onload = function () {
var game = new Phaser.Game(800, 600, Phaser.CANVAS, '', { preload: preload, create: create, update: update, render : render });
// var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update, render: render });
function preload() {
game.stage.backgroundColor = '#007236';
game.load.image('mushroom', 'assets/sprites/mushroom2.png');
game.load.image('phaser', 'assets/sprites/sonic_havok_sanity.png');
}
var cursors;
function create() {
// Modify the world and camera bounds
game.world.setBounds(-1000, -1000, 2000, 2000);
for (var i = 0; i < 100; i++)
{
game.add.sprite(game.world.randomX, game.world.randomY, 'mushroom');
}
// This will create a new object called "cursors", inside it will contain 4 objects: up, down, left and right.
// These are all Phaser.Key objects, so anything you can do with a Key object you can do with these.
cursors = game.input.keyboard.createCursorKeys();
}
function update() {
// For example this checks if the up or down keys are pressed and moves the camera accordingly.
if (cursors.up.isDown)
{
// If the shift key is also pressed then the world is rotated
if (cursors.up.shiftKey)
{
game.world.rotation += 0.05;
}
else
{
game.camera.y -= 4;
}
}
else if (cursors.down.isDown)
{
if (cursors.down.shiftKey)
{
game.world.rotation -= 0.05;
}
else
{
game.camera.y += 4;
}
}
if (cursors.left.isDown)
{
game.camera.x -= 4;
}
else if (cursors.right.isDown)
{
game.camera.x += 4;
}
}
function render() {
game.debug.renderCameraInfo(game.camera, 32, 32);
}
};
</script>
<?php
require('../foot.php');
?>
+62
View File
@@ -0,0 +1,62 @@
<?php
$title = "Angular Acceleration";
require('../head.php');
?>
<script type="text/javascript">
var game = new Phaser.Game(800, 600, Phaser.CANVAS, '', { preload: preload, create: create, update: update, render: render });
function preload() {
game.load.image('arrow', 'assets/sprites/arrow.png');
}
var sprite;
function create() {
game.stage.backgroundColor = '#0072bc';
sprite = game.add.sprite(400, 300, 'arrow');
sprite.anchor.setTo(0.5, 0.5);
// We'll set a lower max angular velocity here to keep it from going totally nuts
sprite.body.maxAngular = 500;
// Apply a drag otherwise the sprite will just spin and never slow down
sprite.body.angularDrag = 50;
}
function update() {
// Reset the acceleration
sprite.body.angularAcceleration = 0;
// Apply acceleration if the left/right arrow keys are held down
if (game.input.keyboard.isDown(Phaser.Keyboard.LEFT))
{
sprite.body.angularAcceleration -= 200;
}
else if (game.input.keyboard.isDown(Phaser.Keyboard.RIGHT))
{
sprite.body.angularAcceleration += 200;
}
}
function render() {
game.debug.renderSpriteInfo(sprite, 32, 32);
game.debug.renderText('angularVelocity: ' + sprite.body.angularVelocity, 32, 200);
game.debug.renderText('angularAcceleration: ' + sprite.body.angularAcceleration, 32, 232);
game.debug.renderText('angularDrag: ' + sprite.body.angularDrag, 32, 264);
game.debug.renderText('deltaZ: ' + sprite.body.deltaZ(), 32, 296);
}
</script>
<?php
require('../foot.php');
?>
+61
View File
@@ -0,0 +1,61 @@
<?php
$title = "Angular Velocity";
require('../head.php');
?>
<script type="text/javascript">
var game = new Phaser.Game(800, 600, Phaser.CANVAS, '', { preload: preload, create: create, update: update, render: render });
function preload() {
game.load.image('arrow', 'assets/sprites/arrow.png');
}
var sprite;
function create() {
game.stage.backgroundColor = '#0072bc';
sprite = game.add.sprite(400, 300, 'arrow');
sprite.anchor.setTo(0.5, 0.5);
}
function update() {
sprite.body.velocity.x = 0;
sprite.body.velocity.y = 0;
sprite.body.angularVelocity = 0;
if (game.input.keyboard.isDown(Phaser.Keyboard.LEFT))
{
sprite.body.angularVelocity = -200;
}
else if (game.input.keyboard.isDown(Phaser.Keyboard.RIGHT))
{
sprite.body.angularVelocity = 200;
}
if (game.input.keyboard.isDown(Phaser.Keyboard.UP))
{
sprite.body.velocity.copyFrom(game.physics.velocityFromAngle(sprite.angle, 300));
}
}
function render() {
game.debug.renderSpriteInfo(sprite, 32, 32);
game.debug.renderText('angularVelocity: ' + sprite.body.angularVelocity, 32, 200);
game.debug.renderText('angularAcceleration: ' + sprite.body.angularAcceleration, 32, 232);
game.debug.renderText('angularDrag: ' + sprite.body.angularDrag, 32, 264);
game.debug.renderText('deltaZ: ' + sprite.body.deltaZ(), 32, 296);
}
</script>
<?php
require('../foot.php');
?>
@@ -1,49 +1,41 @@
<?php
$title = "Motion";
$title = "Mass Velocity Test";
require('../head.php');
?>
<script type="text/javascript">
var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update});
var game = new Phaser.Game(800, 600, Phaser.CANVAS, '', { preload: preload, create: create, update: update, render: render });
function preload() {
game.load.image('car', 'assets/sprites/car90.png');
game.load.image('ship', 'assets/sprites/xenon2_ship.png');
game.load.image('baddie', 'assets/sprites/space-baddie.png');
}
var car;
var ship;
var total;
var aliens;
function create() {
aliens = [];
aliens = game.add.group();
for (var i = 0; i < 50; i++)
{
var s = game.add.sprite(game.world.randomX, game.world.randomY, 'baddie');
var s = aliens.create(game.world.randomX, game.world.randomY, 'baddie');
s.name = 'alien' + s;
s.body.collideWorldBounds = true;
s.body.bounce.setTo(1, 1);
s.body.bounce.setTo(0.8, 0.8);
s.body.velocity.setTo(10 + Math.random() * 40, 10 + Math.random() * 40);
aliens.push(s);
}
car = game.add.sprite(400, 300, 'car');
car.anchor.setTo(0.5, 0.5);
car.body.collideWorldBounds = true;
car.body.bounce.setTo(0.5, 0.5);
car.body.bounce.setTo(0.8, 0.8);
car.body.allowRotation = true;
ship = game.add.sprite(400, 400, 'ship');
ship.body.collideWorldBounds = true;
ship.body.bounce.setTo(0.5, 0.5);
}
function update() {
@@ -66,11 +58,15 @@
car.body.velocity.copyFrom(game.physics.velocityFromAngle(car.angle, 300));
}
game.physics.collide(aliens);
game.physics.collide(car, aliens);
}
function render() {
game.debug.renderSpriteInfo(car, 32, 32);
}
</script>
+1 -1
View File
@@ -22,7 +22,7 @@
fuji = game.add.sprite(game.world.centerX, game.world.centerY, 'fuji');
fuji.anchor.setTo(0, 0.5);
fuji.angle = 34;
// fuji.angle = 34;
b = new Phaser.Rectangle(fuji.center.x, fuji.center.y, fuji.width, fuji.height);
+46
View File
@@ -0,0 +1,46 @@
<?php
$title = "Sprite Rotation";
require('../head.php');
?>
<script type="text/javascript">
// var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update });
var game = new Phaser.Game(800, 600, Phaser.CANVAS, '', { preload: preload, create: create, update: update, render: render });
function preload() {
game.load.image('arrow', 'assets/sprites/arrow.png');
}
var sprite;
function create() {
game.stage.backgroundColor = '#0072bc';
sprite = game.add.sprite(400, 300, 'arrow');
sprite.anchor.setTo(0.5, 0.5);
}
function update() {
sprite.rotation += 0.01;
}
function render() {
game.debug.renderSpriteInfo(sprite, 32, 32);
game.debug.renderText('angularVelocity: ' + sprite.body.angularVelocity, 32, 200);
game.debug.renderText('angularAcceleration: ' + sprite.body.angularAcceleration, 32, 232);
game.debug.renderText('angularDrag: ' + sprite.body.angularDrag, 32, 264);
game.debug.renderText('deltaZ: ' + sprite.body.deltaZ(), 32, 296);
}
</script>
<?php
require('../foot.php');
?>
+2 -4
View File
@@ -5,8 +5,6 @@
<script type="text/javascript">
var game = new Phaser.Game(800, 600, Phaser.CANVAS, '', { preload: preload, create: create, update: update, render: render });
function preload() {
@@ -42,10 +40,10 @@
function update() {
map.collide(p);
// map.collide(p);
p.body.velocity.x = 0;
p.body.acceleration.y = 500;
// p.body.acceleration.y = 500;
if (game.input.keyboard.isDown(Phaser.Keyboard.LEFT))
{
+87
View File
@@ -0,0 +1,87 @@
<?php
$title = "Fixing a Sprite to the Camera";
require('../head.php');
?>
<script type="text/javascript">
window.onload = function () {
var game = new Phaser.Game(800, 600, Phaser.CANVAS, '', { preload: preload, create: create, update: update, render : render });
// var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update, render: render });
function preload() {
game.stage.backgroundColor = '#007236';
game.load.image('mushroom', 'assets/sprites/mushroom2.png');
game.load.image('sonic', 'assets/sprites/sonic_havok_sanity.png');
game.load.image('phaser', 'assets/sprites/phaser1.png');
}
var cursors;
var logo1;
var logo2;
function create() {
// Modify the world and camera bounds
game.world.setBounds(-1000, -1000, 2000, 2000);
for (var i = 0; i < 200; i++)
{
game.add.sprite(game.world.randomX, game.world.randomY, 'mushroom');
}
logo1 = game.add.sprite(100, 100, 'phaser');
logo1.fixedToCamera = true;
logo2 = game.add.sprite(500, 100, 'phaser');
logo2.fixedToCamera = true;
game.add.tween(logo2).to( { y: 400 }, 2000, Phaser.Easing.Back.InOut, true, 0, 2000, true);
cursors = game.input.keyboard.createCursorKeys();
}
function update() {
if (cursors.up.isDown)
{
game.camera.y -= 4;
}
else if (cursors.down.isDown)
{
game.camera.y += 4;
}
if (cursors.left.isDown)
{
game.camera.x -= 4;
}
else if (cursors.right.isDown)
{
game.camera.x += 4;
}
}
function render() {
game.debug.renderCameraInfo(game.camera, 32, 32);
// game.debug.renderSpriteInfo(d, 32, 200);
// game.debug.renderWorldTransformInfo(d, 32, 200);
// game.debug.renderLocalTransformInfo(d, 32, 400);
// game.debug.renderSpriteCorners(d, false, true);
}
};
</script>
<?php
require('../foot.php');
?>