如何使物体反弹边缘

时间:2016-05-03 11:17:17

标签: javascript phaser-framework

我正在用JavaScript编写一个简单的游戏并使用Phaser库。我是新手,所以希望这不是一个愚蠢的问题。

我已经完美地完成了所有工作,但我很想知道如何让岩石反射到墙壁上,而不是穿过它们而出现在另一边。

它与此功能有关:

有人告诉我

  

“如果它达到宽度:940然后x = 940并且你开始返回939,i--等。高度将继续正常。而不是重置,即shot.reset(x, y);

     

如果你击中底部或顶部,那么对高度做同样的操作,保持宽度不变。“

但是,我不确定如何在代码中实现它。我尝试但失败了:)它非常令人沮丧,因此对此事的任何帮助都会很棒。

感谢。

1 个答案:

答案 0 :(得分:1)

通常,我会创建一个速度矢量,它代表我的物体的“速度”。 在每个帧上,我将该速度矢量添加到位置矢量。当我希望我的对象向相反方向移动时,我将向量乘以-1。

创建一个这样的矢量,当你的物体碰撞边缘时,将它乘以-1。

你可以用这种类型的矢量做很多事情,比如平滑的速度降低,类似空间的动作......等等。

e.g:

//on init
var velocity = {x: 10; y: 10};
var pos = {x: 10; y:10};

//on frame update
pos.x += velocity.x;
pos.y += velocity.y

//on edge collision
velocity.x = velocity.x * -1;
velocity.y = velocity.y * -1;