我有点卡住了解消极方向吗?它一定很简单,但似乎无法得到它!
x =当前x位置
dir = x轴上的运动方向
if (tween == 'linear'){
if (dir == 1) {
x += (x / 5);
}
else if (dir == -1){
//what here??
}
}
答案 0 :(得分:2)
这里缺少的是你需要考虑偏离起点,而不是x = 0 (并且还要考虑方向的符号,其他人正确地说明了这一点)。也就是说,如果你的起点是x0,你的等式应该更像是:
x += (x-x0)/5
这是正方向和负方向上的运动图(注意位置在垂直轴上,时间在水平方向上)
这是Python代码。 (请注意,我在dt术语中添加了,因为没有明确的时间进行动态模拟太奇怪了。)
from pylab import *
x0, b, dt = 11.5, 5, .1
xmotion, times = [], []
for direction in (+1, -1):
x, t = x0+direction*dt/b, 0 # give system an initial kick in the direction it should move
for i in range(360):
x += dt*(x-x0)/b
t += dt
xmotion.append(x)
times.append(t)
plot(times, xmotion, '.')
xlabel('time (seconds)')
ylabel('x-position')
show()
答案 1 :(得分:1)
x += (abs(x) / 5) * dir;
答案 2 :(得分:1)
如果您执行x -= (x/5)
之类的操作,则无法跨越x = 0
- 当x
接近0
时,它开始变得越来越少。尝试使用最小增量
v = abs(x) / 5;
x += ((v > MINVEL) ? v : MINVEL) * dir;
答案 3 :(得分:0)
if (tween == 'linear') {
x += (x / 5) * dir;
}
答案 4 :(得分:0)
最后,我添加了一个帧计数器(t)并使用:
x = -(change*dir) * (t /= 10) * (t - 2) + x;
来自我的fav as3 tweener lib: http://code.google.com/p/tweener/source/browse/trunk/as3/caurina/transitions/Equations.as