代码:
this.moveLeft = function(speed)
{
speed *= -1; // Make speed a negative number
this.move( speed, 0 );
};
this.moveUp = function(speed)
{
speed *= -1;
this.move( 0, speed );
};
this.moveDown = function(speed)
{
this.move( 0, speed );
};
this.move = function( x, y )
{
我是Javascript的新手并从游戏中获取了这段代码。我想知道每个职能部门的情况。如果我没有错,这里有4个函数,每个人都有一个参数。为什么左右移动是一个负数?而且,为什么零(0)改变其位置参数"速度"什么时候向左移动并向上移动?
答案 0 :(得分:2)
如果我没有错,这里有4个函数,每个人都有参数。
正确,除了move
需要两个参数(参数)。
为什么向左和向上移动是一个负数?
因为在浏览器中,页面上的坐标从页面左侧的0,0开始,向右移动时x
会增加,向下移动时y
会增加。所以移动"离开"减少x
坐标,然后移动"向上"减少y
坐标。
此外,为什么零(0)改变其位置参数"速度"什么时候向左移动并向上移动?
因为有两个坐标x
(水平)和y
(垂直)。 moveLeft
向左移动(缩小水平,不改变垂直,因此垂直为0
)。 moveUp
向上移动(减少垂直而不改变水平,因此水平为0
)。
答案 1 :(得分:2)
为什么向左和向上移动是一个负数?
因为游戏适用于"倒网格":
因此,虽然你的直觉会说UP是正面的,但实际上它对这个网格系统是负面的。左边总是负数,即如果你在(3,0)并向左移动一个单位,你最终会进入(3 - 1,0)=(2,0)。
此外,为什么零(0)改变其位置参数"速度"什么时候向左移动并向上移动?
我不确定你的意思,但速度是你在一定时间间隔内移动的单位数。在我的例子中关于(3,0)=> (2,0),速度是" 1" (你移动一个单位)。
希望这是有道理的。
答案 2 :(得分:1)
我的猜测是this.move
有两个参数:
然后,
this.moveLeft
将-speed
单位向右移动(即speed
单位向左移动),0
单位向下移动。this.moveUp
将0
单位向右移动,-speed
单位向下移动(即speed
单位向上移动。)this.moveDown
将0
单位向右移动,speed
单位向下移动(即speed
单位向上移动。)为什么向左和向上移动是一个负数
因为将矢量乘以-1
,你会得到一个长度相同但方向相反的矢量。
为什么零(0)用参数" speed"改变它的位置什么时候向左移动并向上移动?
因为这种方式,向量的标量积总是为0,即它们是垂直的。
答案 3 :(得分:0)
速度整数对应于"字符"的移动。因此,如果1是北,那么-1将是南。
因此,当传入具有x和y参数的move()
函数时:
move(-1, 0)
向左移动
move(1, 0)
向右移动
move(0, -1)
向南移动
move(0, 1)
向北移动