Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 那只鸟为什么没有撞到窗台上?_Javascript_Html_Collision Detection_Phaser Framework - Fatal编程技术网

Javascript 那只鸟为什么没有撞到窗台上?

Javascript 那只鸟为什么没有撞到窗台上?,javascript,html,collision-detection,phaser-framework,Javascript,Html,Collision Detection,Phaser Framework,我正在使用phaser.js制作一个flappy bird游戏 我的问题是它不会与壁架碰撞。你如何更换相机(你知道在flappy bird中,他们喜欢移动相机) 任何关于制作我的游戏的其他提示都将不胜感激 var game=new Phaser.game(800600,Phaser.CANVAS,'Phaser demo'{ 预加载:预加载, 创建:创建, 更新:更新, 渲染:渲染 }); var播放器; var starfield; 变量游标; var fireButton; var gam

我正在使用
phaser.js
制作一个flappy bird游戏

我的问题是它不会与壁架碰撞。你如何更换相机(你知道在flappy bird中,他们喜欢移动相机)

任何关于制作我的游戏的其他提示都将不胜感激

var game=new Phaser.game(800600,Phaser.CANVAS,'Phaser demo'{
预加载:预加载,
创建:创建,
更新:更新,
渲染:渲染
});
var播放器;
var starfield;
变量游标;
var fireButton;
var gameOver;
变距;
var vaRandomUpLedgeSize;
var底部壁架;
函数预加载(){
游戏。加载。图像('starfield','data:image/png;base64,Ivborw0kgoaaaansuheugaaajaaaeacayaaabcv/9PAAAEWklEQVR42u3ZsW7UShSA4XltxAMgxGPwHHSwRSQaKpR0FCDRQY+agazej8fesf0vn8llru2zj//aubnh+bvv6fusaqeqeqeqeqeqd7biqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqa在Y97D0C9ZNXI7VF1F5K42L552FPN4YTZ6J5ZV4AT+P93VR7EVBWYVJZ1D+db8gD7+U1D7J8VW0G8F8F8F8F8F8F8F8V8F8F8F8F8V8F8F8F8F8F8F8Z4AT+P93VR7EV7EVBW7BWYV7JJZ1D+D8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FGQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ2XXQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQNOEZKST4JLPW83FP2VEYCDRLIYWEVV93OUPW+rStOY目前,ZZZZGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGYLY6O9V51KBLTJFRNLEBE4jp1kBlTrFrn0vEuXVfP1dpJ+TSgdCCZ/BGIBISAEHIBAQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEQAEKARLF+C+C+C+C+UWNEWNEWAYNEWAACUHH0RVHHHHHYNKYNKYNKYNK;
game.load.image('player','https://i.imgur.com/JArA3tQ.png');
游戏。加载。图像数据:图像/png;Bas64,IfBorWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe数据:数据:数据:数据:数据:图像/数据:图像/PN巴巴巴巴利(数据:数据:图像/PNPNG/巴巴巴巴巴利(图像/PNPNG;数据:图像/png;数据:图像/png;数据:图像/png;巴巴巴利利(数据:图像/png;数据:图像/巴巴巴巴巴利(例如:图像/png;巴利利利利利利利利利利(数据:图像/UY29KZXKoBn/UAAAAELFTKSUQMCC');
游戏。加载。图像数据:图像/png;Bas64,基础64,基础64,基础64,基础64,基础64,基础64,基础64,基础64,基础64,基础64,基础64,基础64,基础4,基础4,基础4,基础6,基础6,基础4,基础6,基础6,基础6,基础6,基础6,基础6,基础6,基础6,基础4,基础6,基础4,基础4,基础4,基础4,基础3,基础4,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据:数据:数据:数据:数据:图像,数据:图像,数据:图像,数据:图像,数据:图像,数据:图像,数据:图像,数据:图像,数据:图像,数据:图像,数据:图像,巴巴巴巴巴巴巴巴基。图像;图像;图像;图像;图像;巴巴巴巴巴巴巴巴巴巴巴巴利;图像;图像;巴巴巴巴巴巴巴巴巴YQAZ/7gaaaabjru5erkjgg==');
}
函数create(){
//滚动的星域背景
游戏。物理。启动系统(相位器。物理。拱廊);
starfield=game.add.tileSprite(0,0800600,'starfield');
starfield.刻度设置为(1,2.5);
starfield.enableBody=true;
//英雄!
player=game.add.sprite(50400,'player');
player.anchor.setTo(0.5,0.5);
玩家。比例。设定到(1.25,1.5);
游戏。物理。街机。启用(玩家);
游戏。物理。启用(玩家,移相器。物理。街机);
player.body.gravity.y=450;
player.body.collizeWorldBounds=真;
upEdge=game.add.sprite(400,0,'upEdge');
bottomLedge=game.add.sprite(400365,'bottomLedge');
随机项大小();
upEdge.scale.setTo(1,vaRandomUpLedgeSize);
随机项大小();
底部凸耳刻度设置为(1,vaRandomUpLedgeSize);
fireButton=game.input.keyboard.addKey(Phaser.keyboard.SPACEBAR);
//还有一些可以玩游戏的控件
cursors=game.input.keyboard.CreateCursorWorkeys();
}
函数更新(){
//滚动背景
starfield.tilePosition.x-=2;
player.x++;
//空格键
如果(player.y>=591.75){
player.y=591.75;
player.x--;
}
如果(fireButton.isDown){
player.body.velocity.y=-250;
}
游戏。物理。街机。碰撞(玩家,upLedge);
游戏。物理。街机。碰撞(玩家,底架);
}
函数render(){
}
函数大小(){
vaRandomUpLedgeSize=Math.floor(Math.random()*(3-1))+1;
如果(vaRandomUpLedgeSize参见:

只有当精灵体具有速度时,碰撞才会触发

因此,我所做的是更改
update()
函数:我删除了对
player.x++;
的调用,并在
create()
函数中为播放器添加了一个x velocity


仅供参考-您已经定义了函数
randomLedgeSize
twice是的,我是故意这么做的哦,nvm,第二个应该是randomLedgeSizeBot();哦,天哪,那是什么目的?仍然没有冲突:(我正要在JSFIDLE上编辑新代码,很抱歉,我弄错了!我把它弄到了壁架的顶部,我不知道发生了什么事。非常感谢!你还有其他制作游戏的技巧吗?关于如何让它永无止境?
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-demo', {

preload: preload,
  create: create,
  update: update,
  render: render
});

var player;
var starfield;
var cursors;
var fireButton;
var gameOver;
var upLedge;
var vaRandomUpLedgeSize;
var bottomLedge;



function preload() {
  game.load.image('starfield', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAAEACAYAAABcV/9PAAAEWklEQVR42u3ZsW7UShSA4XltxAMgxGPwHHSwRSQaKpR0FCDRQY+AgAzeiccej8fesf0Vn8Llru2zJ//aubnh+bv3P6FUsAQEhIAQEAICASEgBISAQEAIiJYDevv7D1BIQAgIASEgBAQCQkDsKCC/DMNvohEQAkJAICAEhIAQEAgIASEgBAQCQkAICAGBgBAQAkJACAgEhIAQEAICASEgBISAQEAICAEhIBAQAkJACAgBgYAQEAJCQCAgBISAEBAICAEhIAQEAkJACAgBISBLQEAICAEhIBAQAkJACAgEhIAQEAICASEgBISAQEAICAEhIAQEAkJACAgBgYAQEAJCQCAgBISAEBAICAEhIASEgEBACAgBISAQEAJCQAgIBISAEBACAgEhIASEgEBACAgBISAEBAJCQAgIAYGAEBACQkAgIASEgBAQCAgBISAEhIBAQAgIATHD1x8PgwREUTh7Cykc9ZPR6t0iN5y97D0c9ZNxi7vF1F5K42l552FPn4ytZ6j5zV4aT+p93vr7EvbwyVhjjqlz1PiGd+erda6S+db8gD7+u1D7jbVwB1jzMbJXtT+g3d+FrYbc8vGx1iPkaBHVOGeTAd3qdn+miGqdL2xxq6zxWtq0akBrHsNBA0JAICAEhICuvfly+ef1x/snzjbHEXayeUAP3+/+eByq+3P3z2eb4wg7WRTQp28fnki9dqjqx+G6wZcsq5U5zriTUGu4nCH7VcdKltXKHGfeSZj7vE0NN1Rx/7xx1fHXuc/+VuY4+07CnNvlWN1DFXc/kOUOmTtLK3PYSXQHmio+Z8j+D2NDQ47dJnNnaWUOO7n/fwcaOih+fs65NZbcJnNmaWUOO/lrcUCpavu/U9hiWVvPYSdRQEMH5SwrdXx/yKk3FA85Nksrc9jJZbuAuq+3XlbNOezkst4jLPW83fp2veYcdrLiIywevv93OUPW+rStOYedzHyEpf7zcGzIscGXPDpaneOMO8l+hOX+gqr/P+OmBi99dLQ6xxl3ErqDh752wzy7e3El/l1DfFx/+PjY1PXi1835tKWOzTl36WNjbCdTj4742NT1au+k/70p3Ul87GhA3Ytefn51pR9DKqCpY+Nhxl6XWtbUsbkzzHls5OwkFdDedzJ0bBi61aUukvvGc46fe41uYTWvEX9D4jvC2XfSjyZ1XIhvYzlvYG7VU+fIOWfNawxdZ+haJTtZY94WdpI6dyj5BJR+YsbeyJJl5F5jzfd4lJ3MPXfIufBQlaWfyrl3sKXXyLlOSRhH3EnJucNat+Ean6yly6o9v51kBlTjFrnlebe4jp1kBlTrFrn0vEuXVfP1dpJ+TSgdCCZ/BgIBISAEhIBAQAgIASEgEBACQkAICAGBgBAQAkJAICAEhIAQEAgIASEgBAQCQkAICAEhIBAQAkJACAgEhIAQEAICASEgBISAQEAICAEhIBAQAkJACAgBgYAQEAJCQCAgBISAEBAICAHRlF+C+UHwNeMuEwAAAC10RVh0U29mdHdhcmUAYnkuYmxvb2RkeS5jcnlwdG8uaW1hZ2UuUE5HMjRFbmNvZGVyqAZ/7gAAAABJRU5ErkJggg==');
  game.load.image('player', 'https://i.imgur.com/JArA3tQ.png');
  game.load.image('upLedge', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAACGCAYAAADZ0np4AAAAiklEQVR42u3UsQ2DQAwF0FslPT0jpE+BmIQBaLMDw2QUSpY45IIrTggFQVK94tvds2TJTnN+52npS4ZPU/q36cZH6ZFX+8wJDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgM3oej/CJpm3J30pUVHK0DDP4nHCd9JjG8fgP1Swh4Bcd7BZH+S2fyAAAALXRFWHRTb2Z0d2FyZQBieS5ibG9vZGR5LmNyeXB0by5pbWFnZS5QTkcyNEVuY29kZXKoBn/uAAAAAElFTkSuQmCC');
  game.load.image('bottomLedge', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAB6CAYAAABQtRgZAAAAgklEQVR42u3TsQmAMBQFwKxib+8I9hbiJA5g6w4O4yiWLhFRUERslAgWF3h5pDmSwA9VUcbUCVPs45MMc3P0Xdoxj+F82PtN6i47GgpNja5b6oTPxvQ6Zk+/4fz07aZQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCj0n+gXawGd+WGo+T+h1gAAAC10RVh0U29mdHdhcmUAYnkuYmxvb2RkeS5jcnlwdG8uaW1hZ2UuUE5HMjRFbmNvZGVyqAZ/7gAAAABJRU5ErkJggg==');

}

function create() {
  //  The scrolling starfield background
  game.physics.startSystem(Phaser.Physics.ARCADE);

  starfield = game.add.tileSprite(0, 0, 800, 600, 'starfield');
  starfield.scale.setTo(1, 2.5);
  starfield.enableBody = true;


  //  The hero!
  player = game.add.sprite(50, 400, 'player');
  player.anchor.setTo(0.5, 0.5);
  player.scale.setTo(1.25, 1.5);
  game.physics.arcade.enable(player);
  game.physics.enable(player, Phaser.Physics.ARCADE);
  player.body.gravity.y = 450;
  player.body.collideWorldBounds = true;




  upLedge = game.add.sprite(400, 0, 'upLedge');
  bottomLedge = game.add.sprite(400, 365, 'bottomLedge');

  randomLedgeSize();
  upLedge.scale.setTo(1, vaRandomUpLedgeSize);

  randomLedgeSize();
  bottomLedge.scale.setTo(1, vaRandomUpLedgeSize);



  fireButton = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR);
  //  And some controls to play the game with
  cursors = game.input.keyboard.createCursorKeys();
}

function update() {
  //  Scroll the background
  starfield.tilePosition.x -= 2;

  player.x++;
  //SPACEBAR 
  if (player.y >= 591.75) {
    player.y = 591.75;
    player.x--;


  }
  if (fireButton.isDown) {
    player.body.velocity.y = -250;
  }

  game.physics.arcade.collide(player, upLedge);
  game.physics.arcade.collide(player, bottomLedge);

}

function render() {

}

function randomLedgeSize() {
  vaRandomUpLedgeSize = Math.floor(Math.random() * (3 - 1)) + 1;

  if (vaRandomUpLedgeSize <= 1.5) {
    vaRandomUpLedgeSize = 1;
  } else {
    vaRandomUpLedgeSize = 2;
  }
}

function randomLedgeSizeBot() {
  vaRandomUpLedgeSize = Math.floor(Math.random() * (3 - 1)) + 1;

  if (vaRandomUpLedgeSize <= 1.5) {
    bottomLedge.y = 500;
  } else {
    vaRandomUpLedgeSize = 2;
  }
}
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-demo', {
  preload: preload,
  create: create,
  update: update,
  render: render
});

var player;
var starfield;
var cursors;
var fireButton;
var gameOver;
var ledges;

function preload() {
  game.load.image('starfield', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAAEACAYAAABcV/9PAAAEWklEQVR42u3ZsW7UShSA4XltxAMgxGPwHHSwRSQaKpR0FCDRQY+AgAzeiccej8fesf0Vn8Llru2zJ//aubnh+bv3P6FUsAQEhIAQEAICASEgBISAQEAIiJYDevv7D1BIQAgIASEgBAQCQkDsKCC/DMNvohEQAkJAICAEhIAQEAgIASEgBAQCQkAICAGBgBAQAkJACAgEhIAQEAICASEgBISAQEAICAEhIBAQAkJACAgBgYAQEAJCQCAgBISAEBAICAEhIAQEAkJACAgBISBLQEAICAEhIBAQAkJACAgEhIAQEAICASEgBISAQEAICAEhIAQEAkJACAgBgYAQEAJCQCAgBISAEBAICAEhIASEgEBACAgBISAQEAJCQAgIBISAEBACAgEhIASEgEBACAgBISAEBAJCQAgIAYGAEBACQkAgIASEgBAQCAgBISAEhIBAQAgIATHD1x8PgwREUTh7Cykc9ZPR6t0iN5y97D0c9ZNxi7vF1F5K42l552FPn4ytZ6j5zV4aT+p93vr7EvbwyVhjjqlz1PiGd+erda6S+db8gD7+u1D7jbVwB1jzMbJXtT+g3d+FrYbc8vGx1iPkaBHVOGeTAd3qdn+miGqdL2xxq6zxWtq0akBrHsNBA0JAICAEhICuvfly+ef1x/snzjbHEXayeUAP3+/+eByq+3P3z2eb4wg7WRTQp28fnki9dqjqx+G6wZcsq5U5zriTUGu4nCH7VcdKltXKHGfeSZj7vE0NN1Rx/7xx1fHXuc/+VuY4+07CnNvlWN1DFXc/kOUOmTtLK3PYSXQHmio+Z8j+D2NDQ47dJnNnaWUOO7n/fwcaOih+fs65NZbcJnNmaWUOO/lrcUCpavu/U9hiWVvPYSdRQEMH5SwrdXx/yKk3FA85Nksrc9jJZbuAuq+3XlbNOezkst4jLPW83fp2veYcdrLiIywevv93OUPW+rStOYedzHyEpf7zcGzIscGXPDpaneOMO8l+hOX+gqr/P+OmBi99dLQ6xxl3ErqDh752wzy7e3El/l1DfFx/+PjY1PXi1835tKWOzTl36WNjbCdTj4742NT1au+k/70p3Ul87GhA3Ytefn51pR9DKqCpY+Nhxl6XWtbUsbkzzHls5OwkFdDedzJ0bBi61aUukvvGc46fe41uYTWvEX9D4jvC2XfSjyZ1XIhvYzlvYG7VU+fIOWfNawxdZ+haJTtZY94WdpI6dyj5BJR+YsbeyJJl5F5jzfd4lJ3MPXfIufBQlaWfyrl3sKXXyLlOSRhH3EnJucNat+Ean6yly6o9v51kBlTjFrnlebe4jp1kBlTrFrn0vEuXVfP1dpJ+TSgdCCZ/BgIBISAEhIBAQAgIASEgEBACQkAICAGBgBAQAkJAICAEhIAQEAgIASEgBAQCQkAICAEhIBAQAkJACAgEhIAQEAICASEgBISAQEAICAEhIBAQAkJACAgBgYAQEAJCQCAgBISAEBAICAHRlF+C+UHwNeMuEwAAAC10RVh0U29mdHdhcmUAYnkuYmxvb2RkeS5jcnlwdG8uaW1hZ2UuUE5HMjRFbmNvZGVyqAZ/7gAAAABJRU5ErkJggg==');
  game.load.image('player', 'https://i.imgur.com/JArA3tQ.png');
  game.load.image('upLedge', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAACGCAYAAADZ0np4AAAAiklEQVR42u3UsQ2DQAwF0FslPT0jpE+BmIQBaLMDw2QUSpY45IIrTggFQVK94tvds2TJTnN+52npS4ZPU/q36cZH6ZFX+8wJDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgM3oej/CJpm3J30pUVHK0DDP4nHCd9JjG8fgP1Swh4Bcd7BZH+S2fyAAAALXRFWHRTb2Z0d2FyZQBieS5ibG9vZGR5LmNyeXB0by5pbWFnZS5QTkcyNEVuY29kZXKoBn/uAAAAAElFTkSuQmCC');
  game.load.image('bottomLedge', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAB6CAYAAABQtRgZAAAAgklEQVR42u3TsQmAMBQFwKxib+8I9hbiJA5g6w4O4yiWLhFRUERslAgWF3h5pDmSwA9VUcbUCVPs45MMc3P0Xdoxj+F82PtN6i47GgpNja5b6oTPxvQ6Zk+/4fz07aZQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCj0n+gXawGd+WGo+T+h1gAAAC10RVh0U29mdHdhcmUAYnkuYmxvb2RkeS5jcnlwdG8uaW1hZ2UuUE5HMjRFbmNvZGVyqAZ/7gAAAABJRU5ErkJggg==');

}

function create() {
  //  The scrolling starfield background
  game.physics.startSystem(Phaser.Physics.ARCADE);

  starfield = game.add.tileSprite(0, 0, 800, 600, 'starfield');
  starfield.scale.setTo(1, 2.5);

  //  The hero!
  player = game.add.sprite(50, 400, 'player');
  player.anchor.setTo(0.5, 0.5);
  player.scale.setTo(1.25, 1.5);  
  game.physics.arcade.enable(player);
  game.physics.enable(player, Phaser.Physics.ARCADE);
  player.enableBody = true;
  player.body.gravity.y = 450;
  player.body.collideWorldBounds = true;
  player.body.velocity.x = 100;

  // The ledges
  ledges = game.add.group();
  ledges.enableBody = true;
  var upLedge = ledges.create(200, 0, 'upLedge');
  upLedge.body.immovable = true;
  var bottomLedge = ledges.create(200, 465, 'bottomLedge');
  bottomLedge.body.immovable = true;

  //  Controls to play the game with
  fireButton = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR);
  cursors = game.input.keyboard.createCursorKeys();
}

function update() {
  //  Scroll the background
  starfield.tilePosition.x -= 2;

  // If spacebar is pressed, increase Y velocity
  if (fireButton.isDown) {
    player.body.velocity.y = -250;
  }

    // Check for collisions
  game.physics.arcade.collide(player, ledges);
}

function render() {
}