制約付き誘導弾

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
夢幻ノ月夜
記事: 143
登録日時: 9年前
住所: Stens;Gate世界線

制約付き誘導弾

#1

投稿記事 by 夢幻ノ月夜 » 8年前

最大旋回速度付きの誘導弾をつくろうとしているのですが、
plが自機の情報(ポインタ)
Areaが最大旋回速度
sp+=Acは加速させてるだけです

最大旋回速度が反映されていないようなのですが
if文の中身が間違っていたりするのでしょうか

コード:

void Bullet_Homing::Move(){
	BulletEx::Move();
	BulletEx::Hit();
	Player *pl=(Player*)Object_Manager::GetTask(O_PLAYER,0);
	if(pl==NULL)return;
	float px=pl->GetX() - this->x;
	float py=pl->GetY() - this->y;

	float pa=atan2(py,px);
	float sa=pa-this->a;

	if(sa <= this->Area && sa >= -this->Area){
		this->a+= sa;
	}else{
		this->a+=(sa<0)?this->Area: -this->Area;
	}

	this->sp+=this->Ac;
}
毎回ゲーム作ろうとするたびに壁にぶち当たる

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 制約付き誘導弾

#2

投稿記事 by みけCAT » 8年前

this->Areaが非負の有効な実数の場合は13行目と15行目でsaの符号とthis->aに足す値の符号の関係が逆になっており、
this->Areaが負の有効な実数であり、saが有効な実数の場合は12行目の条件式が真になることは無さそうです。
これは意図した仕様ですか?
(ここでの「有効な実数」 = 「NaN、Infなどの特殊な値でない浮動小数点数」)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
夢幻ノ月夜
記事: 143
登録日時: 9年前
住所: Stens;Gate世界線

Re: 制約付き誘導弾

#3

投稿記事 by 夢幻ノ月夜 » 8年前

みけCAT さんが書きました:this->Areaが非負の有効な実数の場合は13行目と15行目でsaの符号とthis->aに足す値の符号の関係が逆になっており、
this->Areaが負の有効な実数であり、saが有効な実数の場合は12行目の条件式が真になることは無さそうです。
これは意図した仕様ですか?
(ここでの「有効な実数」 = 「NaN、Infなどの特殊な値でない浮動小数点数」)
saの符号とthis->aに足す値の符号が逆になっているのはミスです
this->Areaはコンストラクタの中で絶対値にしています
毎回ゲーム作ろうとするたびに壁にぶち当たる

閉鎖

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