6/16に開催されたぺちぱな17に参加してきました
今回はUnity入門という事でテトリスを作成しました。
今回は持ち込んだPCでUnityでHello Worldまで実行確認してから参加したのでスムーズにいきました。
前準備は大事です。
講師の先生の作った資料やコード読みながら、ブロックの当たり判定やラインが揃った際のブロック削除処理を実装するのですが、
落ちてくるブロックが置いているブロックをすり抜けるような不具合とかは当たり前に実装しました(笑)
最初に色々と理解するまでが大変ですね。
ブロックの移動ならpositionメソッド、回転とかRotateメソッドで簡単に実装できちゃうんですね。
昔のBASICならLINEコマンドで移動前のブロックを背景色で塗りつぶして、移動先の位置にLINEコマンドで描画とかしてますね。
スプライト(スプライトの衝突割込みとか仕込む)使ったり、
ブロックをキャラクターで表現(ブロックが移動する度に、Print文で上書きする。半ブロック分移動とかはできない)しない場合ですね。
今回はブロックの当たり判定やラインの揃った判定は二次元配列で実装しました。
ブロックのオブジェクトの座標から、二次元配列を割り出して判定です。
当然、わざわざ計算しなくても、オブジェクトが重なっているかとかを判定する仕組みはUnityにあるそうなのですが、今回は見送り。
以前Visual Basic 5で作ったプログラムでの重なり判定はWindowsのRegion関係のAPIを呼び出しまくって判定していた事を思い出しました。
2つのRegionオブジェクトが重なっているかどうかを判定するAPIを使っていたような。
前回のSwiftといい、C#は覚えておくと便利そうです。
Unityで業務アプリ作っても良いでしょうし。
次回は10月予定らしいですよ。
ぺちぱな公式ブログ
https://phper-na.info/archives/177