• 締切済み

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

すいません。 うまく説明できないかもしれないのですが質問します。 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