让精灵沿着一个角度行走
Make sprite walk along an angle
我想让一个精灵走向另一个精灵,
movement_angle = (atan2((y - target->y),(x - target->x)));
if(isWalkable(game,delta))
{
y -= ((int)(movementspeed)*delta)*sin(((movement_angle)));
x -= ((int)(movementspeed)*delta)*cos(((movement_angle)));
}
我正在计算角度并将值添加到我的 x 和 y 线。
但是动作并不完美,没有真正如愿以偿,走弯路等等。
好吧,您正在将代数结果转换为 int。我认为这可能会导致您的问题。
很难准确地说出您的代码出了什么问题,但您可以查看以下内容:
- 要获得从一个点到
target
的向量,您需要用点的 x
减去 target->x
并用点的 [=14= 减去 target->y
]
- 至少
movement_angle
需要是一个浮点数,尽管您可能希望对所有 3D 几何值使用 doubles
- 为什么要麻烦三角函数?你想直接从点
x
、y
走到 target->x
、target->y
,为什么不直接使用一个向量,将它归一化,然后乘以你的 movementspeed
和 delta
?
我想让一个精灵走向另一个精灵,
movement_angle = (atan2((y - target->y),(x - target->x)));
if(isWalkable(game,delta))
{
y -= ((int)(movementspeed)*delta)*sin(((movement_angle)));
x -= ((int)(movementspeed)*delta)*cos(((movement_angle)));
}
我正在计算角度并将值添加到我的 x 和 y 线。 但是动作并不完美,没有真正如愿以偿,走弯路等等。
好吧,您正在将代数结果转换为 int。我认为这可能会导致您的问题。
很难准确地说出您的代码出了什么问题,但您可以查看以下内容:
- 要获得从一个点到
target
的向量,您需要用点的x
减去target->x
并用点的 [=14= 减去target->y
] - 至少
movement_angle
需要是一个浮点数,尽管您可能希望对所有 3D 几何值使用doubles
- 为什么要麻烦三角函数?你想直接从点
x
、y
走到target->x
、target->y
,为什么不直接使用一个向量,将它归一化,然后乘以你的movementspeed
和delta
?