2017-04-19 51 views
1

我正在開發一款遊戲,使用html 5和canvas,並且是遊戲開發的新產品。現在我開發了一款遊戲,其中有很少的汽車,並且有很少的怪物在那裏,我可以控制汽車通過下面的代碼:如何在遊戲中自動移動我的汽車

update(){ 
     if (keys.ArrowUp) { // Player holding up 
      this.y -= this.speed * frameTime; 
      this.dir = Math.PI * 0; // set direction 
     } 
     if (keys.ArrowDown) { // Player holding down 
      this.y += this.speed * frameTime; 
      this.dir = Math.PI * 1; // set direction 
      } 
      if (keys.ArrowLeft) { // Player holding left 
      this.x -= this.speed * frameTime; 
      this.dir = Math.PI * 1.5; // set direction 
     } 
     if (keys.ArrowRight) { // Player holding right 
      this.x += this.speed * frameTime; 
      this.dir = Math.PI * 0.5; // set direction 
     }   
     if(Math.sign(this.speed) === -1){ // filp directio of second car 
      this.dir += Math.PI; // set direction 
     } 

     monsters.array.forEach(monster => { 
      if(monster.isTouching(this)){ 
       monster.reset(); 
       monstersCaught += 1; 
      } 
     }); 
     if (this.x >= canvas.width || this.y >= canvas.height || this. y < 0 || this.x < 0) { 
      this.reset(); 
     } 
    } 

,但現在我想使汽車通過自己在不同directions.I移動不想實現任何路由或者任何AI。我只是想讓汽車在不同的方向上自己移動。例如,直線移動3秒,然後右移2秒,下移3秒,等等。這是我的工作pen

任何幫助表示讚賞。

+1

你的意思,你要移動的其他車輛,或用戶的車? – nycynik

+0

在帆布的汽車。它基本上是自動化遊戲 – RKR

+0

你可以使用'setInterval()' – 2017-04-19 00:49:12

回答

2

你幾乎在那裏!

只需在update()方法中添加一個參數即可,而不是使用鍵盤來編程控制您的汽車。讓它update(dir)

if (!dir && keys.ArrowUp) dir = 'up' // Player holding up 
if (dir === 'up') { 
     this.y -= this.speed * frameTime; 
     this.dir = Math.PI * 0; // set direction 
} 

然後在updateObjects(),與你的新的更新功能與方向

heros.array[2].update('left'); 

打電話給你的汽車的汽車現在這款車將繼續向左移動!

汽車改變方向怎麼樣?

您可以保留一個內部值來跟蹤汽車在同一方向行駛多久,以及它駕駛的方向。當它符合您設置的距離/時間max時,讓它選擇一個新的方向,同時重置跟蹤器值!

this.traveled = 0; 
this.currentDirection = 'left'; 
.... 
this.traveled += distance; // update the tracker 
.... 
if(this.traveled > 1000) { // wow we already traveled 1000px to the left, time to switch direction! 
    this.currentDirection = 'right'; 
    this.traveled = 0; 
} 

結帳更新的筆.update('left').update('random')的細節:https://codepen.io/xna2/project/editor/XjQnqZ/

+0

是啊作品像一個魅力和感謝寶貴的解釋 – RKR