我正在尝试写一个蛇游戏。这非常简单,有一系列蛇形分段,它们都是精灵,它们都有x
和y
的值。在每个游戏循环中,我想根据用户输入更新蛇段。蛇段在蛇游戏中跟随头部
注意:蛇的头部被定义为this.segments[0]
。段数组的第一个元素是头部。
对我来说,根据用户输入更新蛇头似乎是合乎逻辑的,然后在头更新之后将每个蛇段跟随它。这是我的代码到目前为止:
public function update()
{
// Update snake head
this.segments[0].x += 10;
for (var i:Number = 1; i < this.segments.length; i++)
{
// Set the segments position to be the same as the one before it
this.segments[i].x = this.segments[i - 1].x;
this.segments[i].y = this.segments[i - 1].y;
}
}
希望你能看到你在这里做什么。我试图设置段x和y的值与它之前的值相同,因此它会“跟随”。
问题是,当我运行这段代码时,每个蛇段都堆积在同一个坐标的顶部,看起来像是一个运行的段。他们不遵循,他们在彼此的顶部。
对我来说,逻辑看起来很稳固,所以给了什么?
旁注:任何人都知道如何添加一些角度,这取决于你的矢量加速度x,y? – Adrian 2012-03-28 23:45:27