いらいら棒について

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

いらいら棒について

#1

投稿記事 by 黒猫 » 12年前

http://dixq.net/Android/s02_01.html
こちらの動画のように当たってもセーフになる黒いラインはどのようなプログラムを書けばいいのでしょうか…。
初心者故なのか中々解決策が見つかりません…
力を貸していただけると助かります。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: いらいら棒について

#2

投稿記事 by ISLe » 12年前

壁に沿って玉を動かすために、数学や物理の知識を動員する必要があります。
難易度はかなり高いです。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: いらいら棒について

#3

投稿記事 by Dixq (管理人) » 12年前

まず、ブロックのタイプを表す部分に「SAFE」を追加します。

コード:

        public enum eType { // 障害物のタイプ
                OUT, // あたるとアウトなタイプ
                SAFE, // あたっても大丈夫タイプ
                GOAL // あたるとゴールなタイプ
        }
そのブロックの属性をSAFEにしておき、SAFEブロックと接触した時は、
弾が動いている方向とSAFEブロックの線の方向との成す角を算出します。
壁に弾く方向に反射させて弾の進行方向を変えます。
弾は慣性が効いているのでバウンドしますからバウンドする速度をそのままにすると永遠にポンポン跳ね続けてしまいます。
そこで、バウンドする時に少し反射して進む速度を落とします。
こうすることで自然な跳ね返りが実現できるかと思います。

黒猫

Re: いらいら棒について

#4

投稿記事 by 黒猫 » 12年前

Dixq (管理人)殿早速のご返答ありがとうございます

public enum eType については昨日書き込んだ後気付いたんですが肝心のsafeの中身が手が出しようがなく…
エミュレータで自動で動くボールが画面端にぶつかったら跳ね返るというのは作った事があるんですが、
センサーを使ったものとなると一気に混乱してしまします…

もしよければですが、動画のいらいら棒のプログラムがまだ残っていたら載せていただけないでしょうか…

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: いらいら棒について

#5

投稿記事 by softya(ソフト屋) » 12年前

> もしよければですが、動画のいらいら棒のプログラムがまだ残っていたら載せていただけないでしょうか…

Androidは詳しくないので、細かい所にはお答えできませんが「s2.1 ゲームの骨格を作る」だけでなく講座を全部見れば書いてあるのではないでしょうか?
「Androidプログラミングの館」 → 「ゲーム イライラ棒アプリ作成」
http://dixq.net/Android/index.php
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

黒猫

Re: いらいら棒について

#6

投稿記事 by 黒猫 » 12年前

softya(ソフト屋) 殿
いらいら棒製作の講座は全部見よう見まねで直接打ち込みちゃんと起動しました。
が、動画のような当たってもアウトにならなくて跳ねる壁に関する記述がなかったので困っている現状なのです。
申し訳ないです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: いらいら棒について

#7

投稿記事 by softya(ソフト屋) » 12年前

見よう見まねではなく理解すれば追加できると思います。
勉強のためにやっているんですよね?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: いらいら棒について

#8

投稿記事 by ISLe » 12年前

任意の向きの辺と接触した後のボールの向きを求めれば良いのですが、高度な内容なのでAndroidの館にこの部分の計算は出てきません。
センサーを使うかどうかはまったく関係ないですよ。
  1. Playerクラスにバウンド処理用のメソッドを追加してください。
    例えば
    void bounce(Vec vec)
    という形で引数に接触した障害物の辺の向きを表すベクトルを与えます。
  2. Barricade#isHitメソッド、GameMgr#Collisionメソッドにコードを追加して、安全な障害物に接触したとき、1.で追加したメソッドが呼び出されるようにしてください。
Androidではないですがバウンド処理用メソッドの中身はこちらが参考になるでしょうか。
壁に沿って転がる玉:ISLeのビデオゲーム工房

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: いらいら棒について

#9

投稿記事 by Dixq (管理人) » 12年前

すみませんが、探してみましたがもう昔のプロジェクトコードは無いようです。
後、ISLeさんが仰るようにセンサーを使うかどうかは全く関係ないですよ。
どういう処理を追加すればいいかはもう既に述べたので・・。
見ようみまねではなく、特にPlayerクラスと物体との接触計算部分を理解しながら作っていってみて下さい。

黒猫

Re: いらいら棒について

#10

投稿記事 by 黒猫 » 12年前

Dixq (管理人)殿、 ISLe 殿お二方
勉強なのでもっと悩んでみます。
有難うございました。

閉鎖

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