ページ 11

物理を学習してからの方がよかったのでしょうか・・・

Posted: 2011年4月04日(月) 15:19
by 滝の上
こんにちは、滝の上です。
龍神録プログラミング13章まである程度理解できました。(と、思います)
しかし、14章のところで角度を利用した「円形の弾幕」を見てよく分からなくなりました。
詳しく言うと、PI(Π)(円周率)を利用したり、sin、cos、tanを利用したりすることです。
なぜ円周率を使うのか、なぜ三角関数を使うのか分かりません。
三角関数のほうは単位円の応用かなー、と考えているのですが。
円周率のほうはさっぱりです・・・。
物理・数学をもっと勉強してからのほうがいいのでしょうか?

Re: 物理を学習してからの方がよかったのでしょうか・・・

Posted: 2011年4月04日(月) 15:31
by softya(ソフト屋)
物理というよりは数学ですが、分かってしまえばそんなに難しくはないですよ。
管理人さんが「C言語~ゲームプログラミングの館~」で解説してくれてます。

「s13a. sin,cosって何?(STGでの使用方法) (動画で解説編)」
http://dixq.net/g/s.13.a.html
「s13. sin,cosって何? シューティングの基本概念」
http://dixq.net/g/s.13.b.html

きれいな円形の弾幕を描くには、PI(ラジアン角で必要)やsin/cosが必要になりますので勉強してみてください。
「ラジアン - Wikipedia」
http://ja.wikipedia.org/wiki/%E3%83%A9% ... 2%E3%83%B3

Re: 物理を学習してからの方がよかったのでしょうか・・・

Posted: 2011年4月04日(月) 17:27
by おっく
「なぜソレを使わなければならないのか?」と思った場合に、
逆にソレを使わずに実装する方法を考えてみればいいと思いますよ。
(ソレ:今回は三角関数等の数学要素ですね)

弾を動かす → 物体が動いているように描画する
こうするだけなら、ソレは必要ありません。
ですが、方向を定めて、1回分の移動量の分だけ移動させるとなると、
ソレを使う事が優良だと実感すると思います。

ちなみにですが、
三角関数等を使わずに、
シューティングゲームの弾処理をどうやって実装しますか?
前提知識や処理がなければ、「こうやって実装するものか」と感じますが、
疑問に思ったということは、自分なりの考えがあると思います。
「こうしたら実装出来そう」と思った自分なりの考えやモノを書いた方が、
他の方もフォローしやすいと思います。

Re: 物理を学習してからの方がよかったのでしょうか・・・

Posted: 2011年4月06日(水) 08:07
by Dixq (管理人)
softyaさんの仰るように物理というよりは数学ですね。
そして三角関数というよりは三角比のようです。
「三角比」で調べてみてください。
http://www.google.co.jp/#hl=ja&source=h ... =&oq=&fp=1

また、度数法と孤度法があるのをご存じでしょうか?
半円を「180度」と表現するのが度数法、
半円を「円周率π」と表現するのが孤度法です。
http://www.google.co.jp/#hl=ja&biw=1135 ... =&oq=&fp=1

C言語の関数では孤度法を使うので、円周率を使っています。
しかしどうしても孤度法では抵抗があるようでしたら、円周率を180に対応させればいいだけですので
3.141592654.. : 180 という比率で変換して使うという手もあります。

Re: 物理を学習してからの方がよかったのでしょうか・・・

Posted: 2011年4月06日(水) 14:26
by 滝の上
遅れました。
数学で考えればいいのですね。
えっと、度数法と孤度法があるというのは始めて知りました。(もしかしたら忘れてたかも・・・)
後で、調べます。
プログラムのほうは一旦置いておき、ご紹介くださったサイトを利用して勉強してみます。
回答ありがとうございました。
また、何かあったら質問するかもしれませんが、回答くださると幸いです。

Re: 物理を学習してからの方がよかったのでしょうか・・・

Posted: 2011年4月06日(水) 16:25
by ISLe
cosは回転するキャラクタのX座標を求めることができる。
sinは回転するキャラクタのY座標を求めることができる。
atanは2組のXY座標から角度を求めることができる。

そういう命令です。