Entries

Ads by Google

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

-件のコメント

コメントの投稿

新規
投稿した内容は管理者にだけ閲覧出来ます

-件のトラックバック

トラックバックURL
http://hinagis.blog33.fc2.com/tb.php/38-830769c0
この記事に対してトラックバックを送信する(FC2ブログユーザー)

マップチップ その5

今回はキャラクタの移動範囲を制御するプログラムを作成していきます。
制御しなければならない条件としては以下のようなものがあげられます。
  • 画面外に移動しようとしたとき
  • 川に移動しようとしたとき
  • 海に移動しようとしたとき
この条件の中で一番考えやすいのが画面外に移動することを禁止する処理でしょうか。
ということで、まずはこの制御から組み込んでいきます。
今までのフォームの大きさは640×480で、キャラクタなどのマップチップサイズは32×32です。
で、キャラクタ等を表示する座標は画像の左上が基準点となっています。
このことから、キャラクタが移動できるフォーム内の範囲は(0,0)から(640-32,480-32)となります。
これをキー入力時の処理として制御させればよいわけです。
条件としては、移動後の座標が範囲内かどうかになります。
範囲内ならそのまま移動させ、範囲外になりそうなら移動をキャンセルさせればよいわけです。
Public Class CharaClass
・・・(省略)
  Const ImgWidth As Integer = 32 '画像横幅
  Const ImgHeight As Integer = 32 '画像縦幅


  Public Sub New(ByVal px As Integer, ByVal py As Integer)
・・・(省略)
  End Sub

  Public Sub Update(ByVal nowTime As Double, ByVal elapsedTime As Double)
・・・(省略)
  End Sub

  Public Sub Draw(ByVal g As Graphics)
    g.DrawImage(img, locate.X, locate.Y, imgRect(direct, iNo), GraphicsUnit.Pixel)
  End Sub

  Public Sub KeyDown(ByVal k As Keys)
    If MoveFlg = False Then
      Select Case k
        ・・・・(省略)
      End Select
      destination = New PointF(locate.X + velocity.X, locate.Y + velocity.Y) '移動後の座標設定
      If destination.X < 0 OrElse destination.X > 640 - ImgWidth _
        OrElse destination.Y < 0 OrElse destination.Y > 480 - ImgHeight Then
        velocity = New Point(0, 0)
        MoveFlg = False
      End If

    End If
  End Sub
End Class

今までのプログラムではキャラクタ画像サイズを32と直接書いていましたが、今回から定数に変更しています。

0件のコメント

コメントの投稿

新規
投稿した内容は管理者にだけ閲覧出来ます

0件のトラックバック

トラックバックURL
http://hinagis.blog33.fc2.com/tb.php/38-830769c0
この記事に対してトラックバックを送信する(FC2ブログユーザー)

Appendix

最新記事

検索フォーム

月別アーカイブ

売れ筋ランキング

お楽しみ用

アニメグッズ

プロフィール

Author:ひなぎ
VB2005&2008でゲーム作成中

FC2カウンター

Powered By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

FC2ブログ