kingfisher Posted June 24, 2016 Share Posted June 24, 2016 Hey, I'm new to phaser and want to create a small rpg(ish) game. I use the example Csv Map Collide as a base, because I like the idea of tilemaps. So when I copied the code into my project, I get the console shows "TypeError: c.layer.callbacks is undefined" and the canvas is black. As soon as I remove the line which defines the collision between the player and the layer it works fine, but without any collisions. Here's my code(I added another layer): var game = new Phaser.Game(jQuery(window).width(), jQuery(window).height(), Phaser.AUTO, 'phaser-example', { preload: preload, create: create, update: update, render: render }); function preload() { game.load.tilemap('map', 'assets/tilemaps/csv/catastrophi_level2.csv', null, Phaser.Tilemap.CSV); game.load.tilemap('map2', 'assets/tilemaps/csv/catastrophi_level3.csv', null, Phaser.Tilemap.CSV); game.load.image('tiles', 'assets/tilemaps/tiles/catastrophi_tiles_16.png'); game.load.spritesheet('player', 'assets/sprites/spaceman.png', 16, 16); } var map; var layer = []; var player; var cursors; function create() { // Because we're loading CSV map data we have to specify the tile size here or we can't render it map = game.add.tilemap('map', 16, 16); // Now add in the tileset map.addTilesetImage('tiles'); // Create our layer layer[0] = map.createLayer(0); // layer = Phaser.TilemapLayer(game, 'tiles', 0, game.width, game.height); map2 = game.add.tilemap('map2', 16, 16); // Now add in the tileset map2.addTilesetImage('tiles'); // Create our layer layer[1] = map2.createLayer(0); // Resize the world layer[0].resizeWorld(); map.setCollisionBetween(54, 83); layer[0].debug = true; // Player player = game.add.sprite(48, 48, 'player', 1); player.animations.add('left', [8,9], 10, true); player.animations.add('right', [1,2], 10, true); player.animations.add('up', [11,12,13], 10, true); player.animations.add('down', [4,5,6], 10, true); //physics game.physics.enable(player, Phaser.Physics.ARCADE); player.body.setSize(10, 14, 2, 1); //camera game.camera.follow(player); // Allow cursors to scroll around the map cursors = game.input.keyboard.createCursorKeys(); var help = game.add.text(16, 16, 'Arrows to scroll', { font: '14px Arial', fill: '#ffffff' }); help.fixedToCamera = true; } function update() { game.physics.arcade.collide(player, layer[0]); game.physics.arcade.collide(player, layer[1], collisionCallback, processCallback, this); player.body.velocity.set(0); if (cursors.left.isDown) { player.body.velocity.x = -100; player.play('left'); } else if (cursors.right.isDown) { player.body.velocity.x = 100; player.play('right'); } else if (cursors.up.isDown) { player.body.velocity.y = -100; player.play('up'); } else if (cursors.down.isDown) { player.body.velocity.y = 100; player.play('down'); } else { player.animations.stop(); } } function collisionCallback (obj1, obj2) { console.log("callback"); } function processCallback(obj1, obj2) { console.log("process"); } function render() { } I hope someone can help me with this issue, since I can't continue with my project EDIT: found the error, I was using an outdated Phaser.js file Link to comment Share on other sites More sharing options...
Recommended Posts