jegor377 Posted August 13, 2015 Share Posted August 13, 2015 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 Link to comment Share on other sites More sharing options...
Recommended Posts