如何为移动物体获得一定的坡度?我试图让一个敌人在点x,y处产生屏幕,然后在屏幕上自动飞到一个新的x,y,同时添加一个斜率使它看起来像向下,向上或向上俯冲。类似的东西。现在我只知道产卵和向某个方向移动我的敌人,不知道从这里向上看什么。
答案 0 :(得分:1)
如果你想在点之间移动一条直线,那么你可以将delta X和delta Y计算为:
DX = X2-X1;
DY = Y2-Y1;
然后,如果你想移动一个特定的距离(速度/帧),使用Pythagorian定理标准化长度:
HYP = DX*DX + DY*DY;
HYP = sqrt(HYP);
DX = MoveD * DX/HYP;
DY = MoveD * DY/HYP;
然后:
// Move Distance (MoveD) From X1,Y1 to X2,X2 each screen update.
if ((abs(X2-X)<DX)&&(abs(Y2-Y)<DY))
{
X = X + DX;
Y = Y + DY;
} else
// STOP
“俯冲”可以通过动态更改端点来完成。从“目标”前面的终点开始,然后通过目标向上移动以创建“俯冲”运动。添加“速度偏差”,使其加速向下移动并减速向上移动。
使用Bresenham的绘图算法或DDA的变体,这也可以添加到整数数学中。