自機をボスから遠ざけていくには

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yrao

自機をボスから遠ざけていくには

#1

投稿記事 by yrao » 15年前

お世話になってます。

おかげさまでゲーム作りも少しずつ進んできました。
(といってもまだボス弾幕周りが固まってきた程度ですが・・・)
 
今回もまたボス弾幕関連の質問なのですが、アドバイスいただければ幸いです。
 
 
________________________
 
過去ログを見ていて、
『自機をボスの方へ少しずつ近づけていく処理』
というものがあったので、これを応用して、逆に『ボスから自機を遠ざけていく処理』を実装してみようと思い、以下のようにプログラムを書いて見たのですが、

①自機が上下の端までくると、左右のコントロールが効かなくなる
②自機が左右の端までくると、上下のコントロールが効かなくなる

という不具合が起きてしまいました。
どこを修正すればよいのでしょうか・・・
 
double angle = atan2(ch.y-boss.y,ch.x-boss.x);
        
    if(!(ch.x<10 || ch.x>FMX-10)){
        ch.x+=cos(angle)*1;
    } 
    if(!(ch.y< 5 || ch.y>FMY- 5)){
        ch.y+=sin(angle)*1;
    }

Libra

Re:自機をボスから遠ざけていくには

#2

投稿記事 by Libra » 15年前

xとyの動作を分けているのが原因です。
xだけ、yだけの条件を満たす時は、その方向の処理が行われないため、
1や2の動作となります。
double angle = atan2(ch.y-boss.y,ch.x-boss.x);

if( (ch.x>=10&&ch.x<=FMX-10) && (ch.y>=5&&ch.y<=FMY-5) ){
    ch.x+=cos(angle)*1;
    ch.y+=sin(angle)*1;
}
xとyの条件両方を満たさないと動作しないように変更してみました。

yrao

Re:自機をボスから遠ざけていくには

#3

投稿記事 by yrao » 15年前

Libraさんはじめまして。
どうもありがとうございますm(_ _)m
 
 
えーと・・・
教えていただいた通りに書きかえてみたのですが、不具合の方は改善されませんでした(-_-;
 




書きかえたことによって変化したことがあったので報告します。
 
自機が端についてもボスから遠ざかろうとしていた。
(例えば、自機が下の端にいたとすると、x方向には少しずつ動いていました)



自機が端についたところで、x、yどちらの方向への移動もしなくなった
(壁に張りついているような感じです)
 
というものです。

Libra

Re:自機をボスから遠ざけていくには

#4

投稿記事 by Libra » 15年前

不具合に対してどう改善したいのかが書いてないので、
どうしたらよいか、こっちもわかりません。


<<自機が端についたところで、x、yどちらの方向への移動もしなくなった
(壁に張りついているような感じです)

自分はそういうように動くように例書いたので、
期待通りになったかなと。

yrao

Re:自機をボスから遠ざけていくには

#5

投稿記事 by yrao » 15年前

説明不足申し訳ないです;

自機が下端にあった場合では、下方向にはそれ以上進まずに、左、上、右方向には自由に動けるように

自機が左端にあった場合では、左方向にはそれ以上進まずに、下、上、右方向には自由に動けるように

自機が右端にあった場合では、右方向にはそれ以上進まずに、左、上、下方向には自由に動けるように

自機が上端にあった場合では、上方向にはそれ以上進まずに、左、下、右方向には自由に動けるように


という風に改善できればと考えています。
画像

Libra

Re:自機をボスから遠ざけていくには

#6

投稿記事 by Libra » 15年前

設定した端より進んでしまった場合、
座標を戻せばいいと思います。
ch.x+=cos(angle)*1;
ch.y+=sin(angle)*1;
if( ch.x < 10 ){
    ch.x = 10 ;
}
else if( ch.x > FMX-10 ){
    ch.x = FMX-10 ;
}
if( ch.y < 5 ){
    ch.y = 5 ;
}
else if( ch.y > FMX-5 ){
    ch.y = FMX-5 ;
}

yrao

Re:自機をボスから遠ざけていくには

#7

投稿記事 by yrao » 15年前

おかげさまで不具合解決しました!

どうもありがとうございましたm(__)m

閉鎖

“C言語何でも質問掲示板” へ戻る