素人がゲームプログラム作成に挑戦
ゲームを買うお金がないから、ゲームを作るというゲームに挑戦!言語はVisual Basic(VB)をメインにC++、C#、Javaは参考程度
Entries
新しい記事を書く事で広告が消せます。
- --------
- カテゴリ : スポンサー広告
- コメント : -
- トラックバック : -
-件のコメント
コメントの投稿
-件のトラックバック
- トラックバックURL
- http://hinagis.blog33.fc2.com/tb.php/22-928258de
- この記事に対してトラックバックを送信する(FC2ブログユーザー)
アニメーション その1
- ジャンル : コンピュータ
- スレッドテーマ : Visual Basic
RPGゲームのキャラクターのアニメーションを考えていきます。
2Dのゲームではキャラクターは上下左右の4方向を向きます。
ということは、4つの画像があればよいということになります。
で、キー入力された方向の画像を表示するだけでできあがりです。
今回はそっちではなく、キャラクターが止まっているときでもその場で足ふみをしているようなアニメーションを作ります。
例として以下の4つの画像を切り替えて表示していきます。

今回は4つの画像があり、それを切り替えながら表示していくプログラムを作ります。
4つの画像を順番に切り替えていくわけですが、画像オブジェクトはまとめて管理したほうが楽ですので配列かArrayList、Listを使った方がよいでしょう。
今回は4つの画像で固定されていますので、配列を使うことにします。
さらに、今何番目のアニメーション画像を表示しているのかを管理するフィールドを用意しておきます。
画像を出力する前に配列のインデックスを変更させておけば描画する度に画像が切り替わります。
ただ、今のままでは超高速アニメーション。
歩いているアニメーションを作りたくても思い切り走ります。
Timerコントロールみたいにある一定時間がたったとき画像を切り替えるってやれば楽ですが、ゲームではTimerコントロールは使いません。
とりあえず今回はここまで。
2Dのゲームではキャラクターは上下左右の4方向を向きます。
ということは、4つの画像があればよいということになります。
で、キー入力された方向の画像を表示するだけでできあがりです。
今回はそっちではなく、キャラクターが止まっているときでもその場で足ふみをしているようなアニメーションを作ります。
例として以下の4つの画像を切り替えて表示していきます。

今回は4つの画像があり、それを切り替えながら表示していくプログラムを作ります。
4つの画像を順番に切り替えていくわけですが、画像オブジェクトはまとめて管理したほうが楽ですので配列かArrayList、Listを使った方がよいでしょう。
今回は4つの画像で固定されていますので、配列を使うことにします。
さらに、今何番目のアニメーション画像を表示しているのかを管理するフィールドを用意しておきます。
Public Class Form1
Dim Imgs( ) As Bitmap '画像配列
Dim iNo As Integer '表示画像インデックス
Public Sub New( )
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent( )
' InitializeComponent( ) 呼び出しの後で初期化を追加します。
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer, True)
Init( ) '独自メソッドの呼び出し
End Sub
Sub Init( )
Imgs = New Bitmap(3) { }
For i As Integer = 0 To Imgs.GetUpperBound(0)
Imgs(i) = New Bitmap("c:\anime" & i + 1 & ".bmp")
Next
iNo = 0
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = e.Graphics
'画像切り替え処理
If iNo < Imgs.GetUpperBound(0) Then
iNo += 1
Else
iNo = 0
End If
'画像描画処理
g.DrawImage(Imgs(iNo), 0, 0)
Me.Invalidate( ) '強制再描画
End Sub
End Class
Dim Imgs( ) As Bitmap '画像配列
Dim iNo As Integer '表示画像インデックス
Public Sub New( )
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent( )
' InitializeComponent( ) 呼び出しの後で初期化を追加します。
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer, True)
Init( ) '独自メソッドの呼び出し
End Sub
Sub Init( )
Imgs = New Bitmap(3) { }
For i As Integer = 0 To Imgs.GetUpperBound(0)
Imgs(i) = New Bitmap("c:\anime" & i + 1 & ".bmp")
Next
iNo = 0
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = e.Graphics
'画像切り替え処理
If iNo < Imgs.GetUpperBound(0) Then
iNo += 1
Else
iNo = 0
End If
'画像描画処理
g.DrawImage(Imgs(iNo), 0, 0)
Me.Invalidate( ) '強制再描画
End Sub
End Class
画像を出力する前に配列のインデックスを変更させておけば描画する度に画像が切り替わります。
ただ、今のままでは超高速アニメーション。
歩いているアニメーションを作りたくても思い切り走ります。
Timerコントロールみたいにある一定時間がたったとき画像を切り替えるってやれば楽ですが、ゲームではTimerコントロールは使いません。
とりあえず今回はここまで。
0件のコメント
コメントの投稿
0件のトラックバック
- トラックバックURL
- http://hinagis.blog33.fc2.com/tb.php/22-928258de
- この記事に対してトラックバックを送信する(FC2ブログユーザー)



