剣
投稿者 : TL(p1121-ipbfp704fukuokachu.fukuoka.ocn.ne.jp)
- 2008/08/03(Sun) 16:55
No.11939
|
|
|
|
|
三角関数を使った剣を振る動作をしたいのですが サイン、コサインなど分からないので、どなたか やり方を教えてくれないでしょうか
|
Re: 剣
投稿者 : N@N(c109.applc.keio.ac.jp)
- 2008/08/06(Wed) 07:29
No.11942
|
|
|
|
11942.zip
(横スクロールアクションを前提として作ってみます) 剣を振るというのは、基本的には剣グラフィックを回転させるだけなので三角関数は恐らく必要ないでしょう。 DxCharでswordを作り、 player;angle=-60; while(1){ angle+=5; x=player.x; y=player.y; if (angle>=60)die(); update(); } これで回転する画像が表示されます。そして発生させる側では、 s=new sword(x,y,(剣のグラフィック),f,zOrder); s.player=this; appear(s); とします。こうすることで、swordの中心が常にswordを発生させたオブジェクトになります。 あとは当たり判定を書き加えて完成です。
問題は剣のグラフィックです。単純に右向きの剣を描くと自分と重なって回るだけですので、 画像に余白を加えます。すると、中心がずれ、縦に振っているように見えるわけです。 もっと複雑な振り方をしたい時に、初めて三角関数が必要になるでしょう。
|
Re: 剣
投稿者 : TL(p1121-ipbfp704fukuokachu.fukuoka.ocn.ne.jp)
- 2008/08/06(Wed) 18:03
No.11943
|
|
|
|
その手法だと その武器の後ろにも当たり判定が出てしまうので 「単純に右向きの剣」で、ふる動作をしたいのですが できますか?
|
Re: 剣
投稿者 : TL(p1121-ipbfp704fukuokachu.fukuoka.ocn.ne.jp)
- 2008/08/06(Wed) 18:06
No.11944
|
|
|
|
その手法だと その武器の後ろにも当たり判定が出てしまうので 「単純に右向きの剣」で、ふる動作をしたいのですが できますか?
|
Re: 剣
投稿者 : TL(p1121-ipbfp704fukuokachu.fukuoka.ocn.ne.jp)
- 2008/08/06(Wed) 18:07
No.11945
|
|
|
|
Re: 剣
投稿者 : イッカ!(p4113-ipbf1410hodogaya.kanagawa.ocn.ne.jp)
- 2008/08/07(Thu) 14:03
No.11946
|
|
|
|
横から失礼しまs(
敵の当たり判定の部分に、剣より右に居るか左に居るかという条件を加えればいいのでは(
「剣が右向きで」「剣に当たって」「剣より右に居れば」→HIT!
みたいな感じで((( ダメでしたらごめんなさいorz
|
Re: 剣
投稿者 : renf(softbank220018203123.bbtec.net)
- 2008/08/07(Thu) 18:08
No.11947
|
|
|
|
ちょっと失礼。
剣を振った時に剣の先にオプジェクトを出して 敵がそれに当たったらダメージを受ける、 そのオプジェクトは一定時間経つと消える。
というふうにすればどうでしょう。
自分も同じような物を作った事があり そのときはこのようにしました。
|
Re: 剣
投稿者 : N@N(actkyo103210.adsl.ppp.infoweb.ne.jp)
- 2008/08/08(Fri) 22:37
No.11949
|
|
|
|
TLさん、するどいご指摘です。反対側の当たり判定のことを忘れていました。 一番簡単な解決法は、イッカさんのおっしゃるように画像の向きfで判定の文を変えるという方法でしょう。 if (f==0){//右にいるときの当たり判定}else{//左にいるときの当たり判定} 当たり判定を右か左に限定する時は、例えばfor (t in $chars){の中で if (crashTo(t) && t.x>x){t.die()} のようにxの値の大小で右にいるか左にいるかを判断するのが簡単です。 renfさんの方法はさらに柔軟で、剣の一部にだけ当たり判定を持たせるとか複雑な処理に向いていると思います。
|
Re: 剣
投稿者 : TL(p1121-ipbfp704fukuokachu.fukuoka.ocn.ne.jp)
- 2008/08/10(Sun) 10:30
No.11950
|
|
|
|
みなさんありがとうございます。 いろいろ試してみます。
|
|