• 締切済み

ゲーム画面中央から見える範囲

すいません。 うまく説明できないかもしれないのですが質問します。 javaで動く、とあるゲームをやろうとしてるのですが、画像をみてください 白い部分はモニターで映し出される部分です。 中央にAというキャラがいます。このゲームは常にAを中心にしてAがうごいたら画面も動いていくという感じです。 そこで質問ですが、AからCは見えますがBの姿はAからは見えないという現象がおきています。 本来なら画面端のBもみえるはずなのですが、緑線で囲った部分しかAには見えないのです。 もちろんAがBの方に向かっていったり、Bが動いてAの方に向かっていけばBが見えるようにはなるのですが、本来ならば画面端のセルまで見えるはずが表示セルがすくないためか、Aが動いたとしてもAからみえる範囲は常に緑線の中までです。 Javaのことははじめたばかりでほとんどわかりません。 Aからみえる範囲やAがなにかしらアクションを起こしたときに対象にされる範囲を何セル指定 にするかなどの文というか単語が知りたいです。 ちょっとわかりにくかったですが 中心から何セルかを指定して見えるようにしたい のです。 説明下手で申し訳ありませんTT

みんなの回答

  • shikou238
  • ベストアンサー率100% (1/1)
回答No.3

※マップの大きさが画面の大きさより大きいパックマンのようなゲームであるということを前提としていますので的外れな回答であるかもしれません。 Aが(Xa,Ya)、Bが(Xb,Yb)居て、 緑の四角形(白の四角形と同じ大きさ)の大きさが 横:W1 縦:H1 である時を考えます。 まず、Bが(緑の)四角形の中にいる条件を考えます。 Bが四角形の左端より右にいる。・・・(1) Bが四角形の右端より左にいる。・・・(2) Bが四角形の上端より下にいる。・・・(3) Bが四角形の下端より上にいる。・・・(4) これらが全て成り立っている必要があります。 それぞれ考えます。 1) 緑の四角形の左端の座標はXa-(W1/2) なので、条件式は Xa-(W1/2)<Xb です。 2) 1と同様です。 条件式は Xb<Xa+(W1/2) です。 3) 緑の四角形の上端の座標はYa-(H1/2) なので、条件式は Ya-(H1/2)<Yb です。 4) 3と同様です。 条件式は Yb<Ya+(H1/2) です。 よって、緑の中にBがいるかどうか判別する条件式は Xa-(W1/2)<Xb&&Xb<Xa+(W1/2)&&Ya-(H1/2)<Yb&&Yb<Ya+(H1/2) となります。 緑の中にBがいるかどうかの判別は基本的にこれで出きると思います。 この判別式がtrueを返すならば画像を表示すればいいと思いますが、 これでも同じ現象が起きる場合はW1,H1の値がおかしいと思われます。 緑の四角形の大きさと画面の大きさと同じということでしたので W1の値はgetWidth()でH1の値はgetHieght()で取得した値と同じになると思います。 (なお、BにW2の幅、H2の高さがある場合判別式は Xa-(W1/2)<Xb+W2/2&&Xb-W2/2<Xa+(W1/2)&&Ya-(H1/2)<Yb+H2/2&&Yb-H2/2<Ya+(H1/2) となります。)

全文を見る
すると、全ての回答が全文表示されます。
  • devman
  • ベストアンサー率42% (20/47)
回答No.2

> Aからみえる範囲やAがなにかしらアクションを起こしたときに対象にされる範囲を何セル指定 > にするかなどの文というか単語が知りたいです。 私はこのような流れが思い浮かびます。 0) 緑の線の値nを定義しておく (四角形でなくても半径xの円とするとか) 1) Aの座標とCの座標を取得 2) AとCの距離を取得 (2Dゲームであれば3平方の定理で求める) 3) 2)で取得した距離が0)で定義した値n以内? YES -> Cを表示 NO -> Cを表示しない 私が今浮かんだ方法が上記であって、 方法はこれだけではないでしょう。 # もちろん、プログラム化するときはもっと詳細に書く必要があります。

全文を見る
すると、全ての回答が全文表示されます。
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

質問者さんは何をしたいのでしょうか。自分で作ったゲームではないのでしょうから、他人が作ったゲームを自力で改造したい? > Aからみえる範囲やAがなにかしらアクションを起こしたときに対象にされる範囲を何セル指定にするかなどの文というか単語が知りたいです。 プログラムの書き方は千差万別、決まった書き方があるわけではないので、一般的なことは言えません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルでの範囲指定の方法

    エクセルでの範囲指定の方法についての質問です ある一部分の離れたセルのみ除いて範囲指定する方法で、 確か、何かいい方法があったと思うのですが、どうにも思い出せません。 例えば B3・E5・D1からD5 以外のセルのみ範囲指定するとして まず全セル選択ボタンで全部選択して その後、確かコントロールキーを押しながら不要なセルをクリックしていくとできたかとおもうのですが 実際やってみても、1つのセルしかできません。 わかる方教えてください。 説明が下手ですみません。

  • セルの範囲指定で、他のセルの値を参照

    たとえば、A2セルに =sum(A3~B10の範囲指定の設定) というような式が入っているとします。 でもそれはA1セルに、"A3"と、B1セルに"B10"と入力されているものを参照している為で A1、B1セルの値を変化させることでA2セルの範囲指定も連動させて変化させるようなA2の式の 書き方ってありますでしょうか? また、行だけ(数値の部分)や列だけ(AやB等)だけ変化させるなどの方法も知りたいです。 宜しくお願いいたします。

  • エクセルの範囲指定

    セルの範囲指定で、例えば、「=average(A1:C30)」という計算式を入れるとします。 そこに、もう1つセルを足す場合は、「,F1」を足して、「=average(A1:C30,F1)」と すると思うのですが、その逆は無いのでしょうか? 「A1:C30」という範囲指定の中の「B20」というセルは省いて範囲指定したい場合は、 なにかいい手が無いでしょうか? エクセルにはそんな考え方はありませんか? どなたかよろしくご教授ください!!

  • EXCELの印刷範囲のクリアについて

    Excel2007です。よろしくお願いします。 最終的には、別シートを作り直して解決はしたのですが、 方法が分からずすっきりしないため、今後のためにも知っておきたく、 こちらに質問させていただきました。 いただいたEXCELファイルでのことなのですが、 例えば、現在、A1~G10まで何らかの情報が入力されている状態で、 行数は今後増えていくことを想定しB~Fまでを印刷範囲としました。 AとGの列は、データは入力されていますが、印刷はさせたくない部分とします。 印刷プレビュー画面で参照すると、 本来であればB1~F10までが印刷範囲として表示されるはずと思いますが、 なぜかB1~F70、と、行が70列まで範囲状態となってしまいます。 本来1ページで済むはずが、2ページにわたって印刷範囲となっています。 B1~F10を範囲指定すると正常に指定されるのですが、 データが増えることを考えると、列での設定をしたいと思っています。 印刷範囲をクリアし、再度B~Fを印刷範囲設定したのですが、 何度行っても70行まで設定されてしまいます。 何か変なデータが設定されているのかと思い、 11行目~70行目までを削除しても、治りません。 また逆に、60行目あたりで行の追加をすると、印刷範囲はB1~F71、のように 増えていきました。 ですが、行を削除しても範囲は減りません。 ですので、増えた分は増えっぱなしです。 確認した点は、以下です。 ・VBAで設定されているか?⇒「PrintArea」で検索したが、設定なし。 ・名前の管理⇒$B:$F の設定のみで、他の設定はなし どのようにすれば、印刷範囲で行が固定されている部分を解除できますでしょうか? お手数をおかけいたしますが、よろしくお願いいたします。

  • 画面の表示範囲がディスプレイより大きくなっています。

    画面の表示範囲がディスプレイより大きくなっています。 本来、画面右下に表示されているはずの時計なども画面からはみだして全く見えません。 断腸の思いでリカバリも試みましたが修復されませんでした。 このような場合、どのように対応すればよいでしょうか? 機種はSONY VAIO VGN-K30Bを使用しています。 また、この機種ではパネルの解像度は1024×760のはずですが、なぜか1280×800になってしまっています。

  • Excelグラフ作成時の範囲指定について

    Excelでグラフを作成する際に、 B列 行1:=if(A1="","",A1) 行2:=if(A2="","",A2) … 行m:=if(Am="","",Am) 上記のような式を入力している B1:Bm の範囲の折れ線グラフを作成しているのですが、結果が""のセル(Excel画面上では何も表示されていないセル)をグラフにすると、0のラインを這っているような状態になっています。 画面上データが見えないセルの部分のグラフを表示させないようにするにはどのようにしたらよいでしょうか? ちなみに、offset関数も使ってみましたが、関数が入力されているセルは選択範囲に入ってしまうため、だめでした。 分かりづらい説明で申し訳ありません。 みなさんよろしくお願いいたします。

  • 《エクセル》 マクロ-セルの範囲指定の式

    いつもお世話になります。 2つお聞きしたいのですが、エクセルで、 ・「A列のデータのあるセル範囲のみを指定する」と、 ・「A列のデータのあるセル範囲の、隣(B列)のセルを指定する」 というマクロの式はどのように書けば良いのでしょうか。

  • 【Excel】アクティブセルから決まった範囲を選択する

    エクセルで、アクティブブセルから決まった範囲、 たとえば、セルA10がアクティブになっていれば A10~M10までを、セルB30がアクティブになっていたら B30~N30までを、常に1RX13C分を選択することを 覚えさせるような機能はありませんでしょうか? もしマクロでないと無理なら、マクロを教えていただけますでしょうか。

  • エクセルVBAで範囲の指定をしたいです(初心者)

    エクセルVBAで範囲の指定をしたいです(初心者) 列AからJがデータが入る範囲です。 列AとBとCには必ず数値等が何かしら入ります。 列Dは常に空白です。 列E以降は何か入ることも入らないこともあります。 7行目までデータがある場合、 A1セルからこの場合はJ7セルまでを範囲指定したいのですが 行数は未定なので、 Range("A1").Select Range(Selection,Selection.End(xlDown)).Select でA列のデータ最終行まで下がり、そこから9つ右の列までを 範囲指定するというのがよくわかりません。 自動記録で絶対参照と相対参照を切り替えてやってみたのですが、 どうしても Range(Selection, Selection.End(xlDown)).Select ActiveCell.Range("A1:J7").Select と常にA1からJ7が指定になってしまいます。 バージョンは2003です。 つたない質問文で申し訳ありませんが、 どなたか宜しくお願いいたします。

  • ExcelVBA:セルの範囲を指定し、線を引く方法

    プログラムでセルの範囲を指定し、線を引きたいのですが、マクロでやった結果うまくいったのですが、自分でプログラムを作るとセルの範囲を選択するときに違った動作をしてしまいます。 下のコードはセルAの線、Bの線、……、と線を引くために範囲を選択しているのですが、この部分の選択範囲がおかしくなってしまいます。 Range("A:A,B:B,C:C,D:D,E:E,F:F,G:G,G:G").Select With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous End With 一回一回範囲を指定し、線を引く方法もありますが、どのように対処すればよいでしょうか? 回答よろしくお願いします。