Phaser 2 确定哪个单元处于活动状态

问题描述

我有 3 个可点击的对象。当一个被点击时,这将成为“选定单位”。 我正在尝试为单位创建一些通用操作,例如移动到一个点。

在我的创建函数中,我初始化了单位,当一个单位被点击时 - 这应该成为“选定单位”,以便我的移动和方向功能适用于这个单位。但是,脚本无法识别哪个单位打算,例如我收到此错误

未捕获的类型错误:无法读取未定义的属性“速度”。

有没有办法使用变量来指示选定的用户并将其传递给函数

@H_502_8@window.onload = function() { var block_count = 0; var block = ''; var selected_unit = ''; var unit_clicked = 0; var tank1 = null; var game = new Phaser.Game(800,600,Phaser.AUTO,'',{ preload: preload,create: create,update: update,render: render}); function preload () { game.load.image('block','block.png'); game.load.image('tank1','tank.png'); game.load.image('baddie','tank.png'); game.load.image('mouse_btn','block.png'); game.input.mouse.capture = true; } function create () { game.physics.startSystem(Phaser.Physics.ARCADE); mouse_btn = game.add.sprite(30,30,'mouse_btn'); mouse_btn.anchor.setTo(0.5,0.5); //T1 tank1 = game.add.sprite(30,'tank1'); initialise_player(tank1); game.physics.enable(tank1,Phaser.Physics.ARCADE); //T2 tank2 = game.add.sprite(30,60,'tank1'); initialise_player(tank2); game.physics.enable(tank2,Phaser.Physics.ARCADE); game.world.setBounds(0,2000,2000); game.camera.follow(tank1); } function update () { if(selected_unit == '') { mouse_btn.x = game.input.mousePointer.worldX mouse_btn.y = game.input.mousePointer.worldY } if(game.input.activePointer.leftButton.isDown && block_count == 0 && unit_clicked == 0) { game.input.activePointer.leftButton.stop(event); block_count =1; block = game.add.sprite(game.input.mousePointer.worldX,game.input.mousePointer.worldY,'block'); game.physics.enable(block,Phaser.Physics.ARCADE); block.anchor.setTo(0.5,0.5) lookAtObject(selected_unit,block,0.005); } if(block.alive){ game.physics.arcade.movetoObject(selected_unit,260,0) } else { console.log(selected_unit) selected_unit.body.veLocity.x = 0; selected_unit.body.veLocity.y = 0; } if(game.physics.arcade.collide(selected_unit,block)) { block_count--; block.kill(); } } function render(){ //console.log(game.physics.arcade.collide(tank1,block)) } function lookAtObject(obj,target,rotspeed){ var angle = Math.atan2(block.y - tank1.y,block.x - tank1.body.x); tank1.rotation = angle + game.math.degToRad(90); } function initialise_player(tank1){ tank1.anchor.setTo(0.5,0.5); tank1.inputEnabled = true; tank1.input.useHandCursor = true; tank1.events.onInputDown.add(t1_clicked,this); tank1.events.onInputOver.add(t1_over,this) tank1.events.onInputOut.add(t1_out,this) } function t1_clicked() { selected_unit = tank1; } function t1_over() { unit_clicked = 1 } function t1_out () { unit_clicked = 0 } };

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)