gpt4 book ai didi

c - 以正弦波移动 Sprite

转载 作者:行者123 更新时间:2023-11-30 17:11:29 24 4
gpt4 key购买 nike

有人可以给我一个关于如何让我的敌人以正弦波移动的想法或数学公式吗

尝试过类似的方法,但它们只是同时移动,因此它们只是创建了一条左右移动的敌人的直线。

for(int i = 0; i < 5; i++){
float y = sinf( 100+delta_time*0.06f) * 75;
float x = game->enemy[i].base_x + y;
game->enemy[i].x = x ;
game->enemy[i].y += 1;
SDL_Rect rect = { game->enemy[i].x , game->enemy[i].y ,game->enemy[i].w, game->enemy[i].h};
SDL_RenderCopy(game->renderer , game->enemy[i].sprite , NULL , &rect);
}

最佳答案

v=(v_x,v_y)为敌人的总体方向。令o为 vector o=(-v_y/||v||,v_x/||v||),其中||v||=sqrt (v_x.v_x+v_y.v_y)v 的范数。 vector o 垂直于v。在该方向上需要正弦运动。因此,位置p(t)=(x(t),y(t))定义为:

x(t)=v_x.t-A.v_y/||v||.sin(w.t)
y(t)=v_y.t+A.v_x/||v||.sin(w.t)

其中A是振荡的幅度,w是振荡的脉动。对应的频率为f=w/(2pi)。那么,波长lambda=||v||/f对应于振荡的长度。

如果敌人沿 x 方向移动 (v_y=0),则:

x(t)=v_x.t
y(t)=A.sin(w.t)

振荡长度为lambda=2pi.v_x/w

关于c - 以正弦波移动 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32224454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com