Search the Community
Showing results for tags 'phaser and collision bug'.
-
Hi! I've got a little problem. My problem is when I try to check overlap object which is moving to some direction (its velocity is 150). Just when it has to collide with the object on its way, it just passes through this object and then the overlapping is not working for any objects... Please, tell me how to fix that (and sorry for my english [and that I don't comment my code. xd]. I'm learning for 2 months.). Player class code which control the bullets: function _Player(){ this.player = game.add.sprite(GameData.levelData.player_data.spawn_point.x*GameData.levelData.tile_size.w, GameData.levelData.player_data.spawn_point.y*GameData.levelData.tile_size.h, 'dude'); game.physics.enable( this.player, Phaser.Physics.ARCADE); this.player.width = GameData.levelData.tile_size.w; this.player.height = GameData.levelData.tile_size.h; this.spark = game.add.sprite(this.player.x-2, this.player.y-(this.player.height+30)/2, 'fire_spark'); ///2+47 this.spark.width = 25; this.spark.height = 32; this.bullets = game.add.group(); this.bullets_count = 0; this.bullets.enableBody = true; this.bullets.physicsBodyType = Phaser.Physics.ARCADE; this.isShoting = false; this.canShoot = false; this.fireTimer = new _MyTimer(1000); this.player.body.drag = {x: 700, y: 700}; this.player.body.collideWorldBounds = true; this.player.anchor.setTo(0.5, 0.5); this.player.animations.add('walk', [1,2,3,4,5,6,7,8], 20, true); game.camera.follow(this.player); this.player.angle = 0; this.spark.anchor.setTo(0.5, 0.5); this.spark.animations.add('fire', [1,2,3,4], 25, true); this.spark.animations.add('do_nothing', [0], 1, true); this.spark.animations.play('do_nothing'); this.destroyBullet = function(bullet, wall) { bullet.kill(); this.bullets_count--; } this.update = function() { GameData.Player.player.angle = game.physics.arcade.angleToPointer(GameData.Player.player)*180/Math.PI+90; //+1.5707963267948966192313216916398 [rad] this.getSparkAngle(); game.physics.arcade.collide(this.player, GameData.tilemap); if(!this.isShoting) this.spark.animations.play('do_nothing'); game.physics.arcade.overlap(this.bullets.getFirstAlive(), GameData.walls, this.destroyBullet, null, this); this.fireTimer.update(); if(this.fireTimer.isTimedUp()) { this.canShoot = !this.canShoot; } } this.getSparkAngle = function() { if(this.spark.frame!=0) { xs = this.player.x; ys = this.player.y; r = (this.player.height+30)/2; n = 360.0; for(i=0; i<(this.player.angle-91.0 > 0.0 ? this.player.angle-91.0 : 360.0+this.player.angle-91.0); i++) { alpha = 6.283185 * i / (n - 1); x = xs + r * Math.cos(alpha); y = ys + r * Math.sin(alpha); } this.spark.x=x; this.spark.y=y; delete xs; delete ys; delete r; delete n; delete alpha; this.spark.angle=this.player.angle; } } this.getBulletAnglePos = function() { xs = this.player.x; ys = this.player.y; r = (this.player.height+60)/2; n = 360.0; for(i=0; i<(this.player.angle-90.0 > 0.0 ? this.player.angle-90.0 : 360.0+this.player.angle-90.0); i++) { alpha = 6.283185 * i / (n - 1); x = xs + r * Math.cos(alpha); y = ys + r * Math.sin(alpha); } return {rx: x, ry: y}; } this.shoot = function() { if(this.canShoot) { this.spark.animations.play('fire'); if(this.bullets_count<15) { this.bullets_count++; bullet_pos = this.getBulletAnglePos(); last_bullet = undefined; last_bullet = this.bullets.create(bullet_pos.xr, bullet_pos.yr, 'bullet'); game.physics.enable( last_bullet, Phaser.Physics.ARCADE); last_bullet.width = 8; last_bullet.height = 11; last_bullet.reset(bullet_pos.rx, bullet_pos.ry); last_bullet.anchor.setTo(0.5, 0.5); last_bullet.angle = this.player.angle; last_bullet.colldeWorldBounds = true; game.physics.arcade.moveToPointer(last_bullet, 150); } this.isShoting=true; } }}This is the only controller
-
- overlap bug
- collision bug
- (and 3 more)