ページ 11

敵機を弧を描くように移動するには

Posted: 2010年6月12日(土) 22:26
by たろう
敵機を20カウントしながら下に移動してカウントし終わったら弧を描くようにプログラミングしたつもりなのですが、止まったままになります。どうしたら弧を描くようになるでしょうか?
ソース載せます。
void enemy_pattern2(int i)
{
    int idou=0;
    float x=enemy.x,y=enemy.y;
    if(enemy.cnt==0)
    {
        enemy.ang=0;
        enemy.vy=2;
        enemy.vx=0;
        enemy.sp=0;
        return;
    }
    if(enemy.cnt==20)
    {
        enemy.gentenx=enemy.x;
        enemy[i].genteny=enemy[i].y;
        return;
    }
    if(enemy[i].cnt==40)
    {
        enemy[i].ang=0;
        enemy[i].vy=0;
        enemy[i].vx=0;
        enemy[i].sp=0;
        idou=1;
    }
    if(enemy[i].cnt%80==0)
    {
        enemy[i].ang=0;
        enemy[i].vy=0;
        enemy[i].vx=0;
        enemy[i].sp=0;
        idou=1;
    }
    if(enemy[i].cnt%160==0)
    {
        enemy[i].ang=0;
        enemy[i].vy=0;
        enemy[i].vx=0;
        enemy[i].sp=0;
        idou=2;
    }
    switch(idou)
    {
    case 1:
        //左に弧を描くように移動
        x=((enemy[i].x-enemy[i].gentenx)*cos(2*PI/180)-(enemy[i].y-enemy[i].genteny)*sin(2*PI/180))
            +enemy[i].gentenx;
        y=((enemy[i].x-enemy[i].gentenx)*sin(2*PI/180)+(enemy[i].y-enemy[i].genteny)*cos(2*PI/180))
            +enemy[i].genteny;
        break;
    case 2:
        //右に弧を描くように移動
        x=((enemy[i].x-enemy[i].gentenx)*cos(-2*PI/180)-(enemy[i].y-enemy[i].genteny)*sin(-2*PI/180))
                    +enemy[i].gentenx;
        y=((enemy[i].x-enemy[i].gentenx)*sin(-2*PI/180)+(enemy[i].y-enemy[i].genteny)*cos(-2*PI/180))
                    +enemy[i].genteny;
        break;
    }
    enemy[i].x=x,enemy[i].y=y;
}

よろしくお願いします。

Re:敵機を弧を描くように移動するには

Posted: 2010年6月12日(土) 23:15
by たろう
自己解決しました。すみませんでした。