プロフィール

カイロプラクター てん

Author:カイロプラクター てん


【趣味】
・自転車に乗って
 ヘロヘロになる事。
・カイロプラクティックで
 人を元気にする事。

カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
作ったiOS App

スポンサーサイト

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

iPhone iOSで対戦型ゲームを作ろう!#7

今回は、敵UFOに玉が当たったらフラフラさせちゃうぞ!

フラフラする方法は、iOSが持っているアニメーション機能を使用して実現

この機能に大ハマりしました。

はぁ〜、
書きたい事、書いたので、

スッキリ

今回は、これで終わりでもいいかも






さて、準備です。

まず、ここのハマった部分
MainStoryboard.storyboardを選んでFile inspectorを選んで
「Use Autolayout」のチェックを外す。
1301177.png
本当に、このチェックを外すんですかぁ〜!?
これを外さないと、アニメーションを実行した時にレイアウトが、初期状態に戻ってしまうんですよね

他の方法知っていたら教えてほしいなぁ〜

次は、敵UFOをクリックして
TekiUFO.pngをBackgroundに適用していたので、Imageの方に変更。
1301178.png

アニメション用のpngを「Supporting Files」にドロップ
TekiUFO01.pngTekiUFO02.png

TekiUFO.m に当たったよ!のフラグ用変数 hit_c
1301179.png

敵UFOに玉が当たったら、フラフラアニメーションが終わるまで当たり判定をしない
無敵状態にする
1301180.png
1301181.png
当たり判定の下に、当たったらフラフラのアニメーションを実行させるインスタンスへ
1301182.png

[1]がアニメーションスタート部分
アニメーションが動いていない事を確認して、hit_cが1の時
アニメーションスタート

[2]がアニメーションが終了を確認して無敵モードを解除

hit_c無しでも可能なんだけどね、
ま、個人的な趣味ですかねぇ〜。

はい!
シミュレータRun!
1301183.png

フラフラしちゃってますねぇ!

今回は、これで終わり。

次回は、MyUFOの当たり判定とフラフラです。

もう一個タイマー追加かぁ!?

--* ページのまとめ *--
1.iPhone iOSで対戦型ゲームを作ろう!#1
2.iPhone iOSで対戦型ゲームを作ろう!#2
3.iPhone iOSで対戦型ゲームを作ろう!#3
4.iPhone iOSで対戦型ゲームを作ろう!#4
5.iPhone iOSで対戦型ゲームを作ろう!#5
6.iPhone iOSで対戦型ゲームを作ろう!#6
7.iPhone iOSで対戦型ゲームを作ろう!#7
8.iPhone iOSで対戦型ゲームを作ろう!#8
9.iPhone iOSで対戦型ゲームを作ろう!#9
10.iPhone iOSで対戦型ゲームを作ろう!まとめ
THEME:プログラミング | GENRE:コンピュータ |

iPhone iOSで対戦型ゲームを作ろう!#6

今回は、玉のあたり判定のプログラム〜。
ついでに、今回から
Xcode 4.6にバージョンアップ!!

さて、さて、どこにあたり判定を置こうかな?



うん?
そもそも、対戦と言っておきながら、勝ち負けの判定(ルール)を考えていなかったりする・・。

う〜ん

それじゃ、飽きるまで無限ループしよ〜と、

では、敵UFOとMyBomのあたり判定

場所は、うんこ発射プログラムと左右移動プログラムの間

判定方法は、楕円と円の距離ではなくて、領域(?)での判定をします。
if文がずらりと並ぶ感じ

まずは、Y座標から考える。
敵UFOの上をMyBOMがY座標方向に通過する時の関係は以下の5通りが考えられる。
1301170.png
2、3、4の時が当たり判定のフラグが立つような条件を考えればいい。

まずは、[2]について よ〜く 考える
1301171.png

敵UFOの上側のY座標の変数が TekiUFO_UP ( Y = 50 )
敵UFOの下側のY座標の変数が TekiUFO_DN ( Y = 115 )
BOMの上側のY座標の変数が BomUP ( Y = 100 )
BOMの下側のY座標の変数が BomDN ( Y = 148 )
とした場合・・・・・、

敵UFOにBomがメリコンでいる部分を
じ〜と、見ていると
1301175.png
BomUP < TekiUFO_DN ( 100 < 115 ) の条件式がみえてくる。 

しか〜し!
このままでは、[5]の時も成立していまうので問題あり
残りの変数 BomDN、TekiUFO_UP を駆使して



難しい・・。

では、ちょっと考え方を変えて[4]の時を考える
座標は、こんな感じ
TekiUFO_UP ( Y = 50 )
TekiUFO_DN ( Y = 115 )
BomUP ( Y = 20 )
BBomDN ( Y = 68 )

同じく、敵UFOにBomがメリコンでいる部分を
じ〜と、見ていると
1301176.png
BomDN > TekiUFO_UP ( 68 > 50 ) の条件式がみえてくる。

[2][4]の合わせ技を使って
1301172.png

BomUP < TekiUFO_DN && BomDN > TekiUFO_UP
となるわけです。
ややこしくなりましたが、
興味のある方は、[1][2][3][4][5]の答え合わせしてみよう!

そして
プログラム部分はこんな感じ
1301173.png
座標取得部分が長くなってしまったけど・・、

シミュレータ Run!
敵UFOとBomがY座標方向で同じになると
LOGに「Hit」が連続で表示されているのがわかる。

成功!

あとは、Y座標と同じ考え方でX座標の条件分を追加
1301174.png
赤い所が、追加した部分

シミュレータ Run!
LOG出力をみると、敵UFOとBomが重なり合った時だけ「Hit」が出力される。

成功!

ふぅ〜、

頭使いすぎたので、今回はこれで終わり。

次回は、Hitしたらそれらしく敵UFOをフラフラさせます。

--* ページのまとめ *--
1.iPhone iOSで対戦型ゲームを作ろう!#1
2.iPhone iOSで対戦型ゲームを作ろう!#2
3.iPhone iOSで対戦型ゲームを作ろう!#3
4.iPhone iOSで対戦型ゲームを作ろう!#4
5.iPhone iOSで対戦型ゲームを作ろう!#5
6.iPhone iOSで対戦型ゲームを作ろう!#6
7.iPhone iOSで対戦型ゲームを作ろう!#7
8.iPhone iOSで対戦型ゲームを作ろう!#8
9.iPhone iOSで対戦型ゲームを作ろう!#9
10.iPhone iOSで対戦型ゲームを作ろう!まとめ
THEME:プログラミング | GENRE:コンピュータ |

iPhone iOSで対戦型ゲームを作ろう!#5

今回は、敵UFOがうこ発射してくるプログラム
なぜ?うこ?
う〜ん




敵が発射した時、自分が嫌な物と考えると




なだけです。

では、本題にもどして

まず初めにクラスを作ります。
なんの?
それは、敵のうこの・・・。
しつこい!?

右クリックして( +contorol キー) 「New File...」を選んで
1301146.png
1301104.png
ここをクリック

考え方は、MyBomと同じに
Class → UnkoBom
Subclass → UIImageView
1301147.png

「Next」→「Create」
1301148.png
完成

次は、配置
今までと同じ要領で
Mainstoryboard.storyboardを選んでObjectsからImageViewをドラッグ&ドロップ
unko.pngをSupporting Filesにドロップして
unko.png
ImgeViewのImage → unko.pngを選んで
Size → width 48 / Height 48
Custom Class  → UnkoBom
1301149.png
配置完了

次はプログラム
今回は、こんな感じのプログラムを予定
MyUFOが敵UFOと重なった時、敵UFOがうこ投げてくる(発射する)
発射したうこは、タイマーを使って移動させる。

まず、TekiUFO.h
#import "UnkoBom.h"
#import "MyUFO.h"
1301150.png
追加

unkoBomが使えるようにおまじないとタイマーの変数宣言
1301151.png
IBOutlet UnkoBom *unkoBom;を連携
1301152.png
もう一文、おまじないを
@property (nonatomic,retain) IBOutlet MyBom *mybom;
1301153.png
TekiUFO.mにもおまじない。
1301156.png
これで、Class 「UnkoBom」のImageViewが、TekiUFO.mで扱えるようになった

こ発射のタイミングでMyUFOの位置座標を知りたいので、Class「MyUFO」を扱えるようにする。
TekiUFO.hに
IBOutlet MyUFO *myUFO;
1301154.png
そして、連携
1301155.png
これで、MyUFOがあつかえるようになった。

次は、TekiUFO.m
-(void)TekiTimer :(NSTimer *)timer の所にプログラムを書いて行く
TekiUFOとMyUFOが重なったらunkoBomを移動するタイマーを発動
こを投げる条件は
TekiUFOとMyUFO X座標関係が±30ドットが4回続くと
こ、発射!

まずは、カウントする変数を宣言
1301157.png

そして、プログラムは
こんな感じ
1301158a.png
条件が揃うとうちがTekiUFOの下に移動してLOGに”発射”が表示される。

シミュレータ Run! 久しぶり!
1301159.png
おぉ!
うまく動いたのでタイマー発動

タイマー発動プログラムは、発射する条件文の所に追加
1301160.png

タイマー処理はこんな感じ
1301161.png
表示枠ギリギリ( y>548)まで行ったら、タイマーOFF

シミュレータ Run!
1301162.png
当たり前だけど、発射されたうこが残っている。

MyBomの時と同じように処理追加
1.連続でうこが連続で投げられた時のタイマー異常にならない処理
2.うこ表示、非表示

1.タイマー対策
フラグ用変数宣言
1301163.png

こ発動タイマーの条件に追加してフラグをYES
1301164.png
タイマーOFFの所にフラグをNO
1301165.png

2.表示対策
-(void) awakeFromNib
1301166.png

-(void)TekiTimer :(NSTimer *)timer
1301167.png

-(void)UnkoTimer :(NSTimer *)timer
1301168.png

よし!
シミュレータ Run!
1301169.png

動いた!
今回はこれで終わり。

次回は、あたり判定の処理です。
しかし、敵UFO弱すぎだなぁ〜。

--* ページのまとめ *--
1.iPhone iOSで対戦型ゲームを作ろう!#1
2.iPhone iOSで対戦型ゲームを作ろう!#2
3.iPhone iOSで対戦型ゲームを作ろう!#3
4.iPhone iOSで対戦型ゲームを作ろう!#4
5.iPhone iOSで対戦型ゲームを作ろう!#5
6.iPhone iOSで対戦型ゲームを作ろう!#6
7.iPhone iOSで対戦型ゲームを作ろう!#7
8.iPhone iOSで対戦型ゲームを作ろう!#8
9.iPhone iOSで対戦型ゲームを作ろう!#9
10.iPhone iOSで対戦型ゲームを作ろう!まとめ
THEME:プログラミング | GENRE:コンピュータ |

iPhone iOSで対戦型ゲームを作ろう!#4

今回は、敵UFOをタイマーを使用して動かす部分のプログラム

敵UFOのクラスの作る
1301103.png

1301104.png

Class → TekiUFO
Subclass → UIButton
1301135.png
あとは、ボタンを押し続けて
1301136.png
クラス作成終わり。

次は、部品の敵UFOを配置しよう
ImageViewでといきたい所だけど、
MyUFOと同じButtonにしよう。

MyUFOと同じ要領でMainStoryboardにRound Rect Buttonを配置して

TekiUFO.png
このTekiUFO.pngをSupporting Filesにドロップして
BackgroundでTekiUFO.pngを選ぶ(imageを選んでもOK)
サイズを100×65に変更して

こんな感じに配置
1301137.png

最後に部品のクラスを選択してクラスをTekiUFOに変更
1301139.png
これで、準備完了。

このTekiuFOをタイマーで単純に左右に動かします。
タイマーのおまじない。
TekiUFO.hに
1301140.png

TekiUFO.mが読み込まれたら初めに動くインスタンスにawakeFromNibにタイマーを設定
1301142.png

タイマーで左右に動くようにTekiTimerにプログラムをかく
まずは、右か左どちらに動いているのかを判断するtmove_RLのフラグを作成
1301143.png
TekiTimerはこんな感じ
1301144.png
今回は、CASEを使ってみた。
右いっぱいまでいったら、左いっぱいまでとこれを繰り返す。

シミュレータ Run!
1301145.png

おぉ!
対戦しているみたいで
かっこいいぞ!
今回は、これで終わり。

次は、敵がうこを投げるぞ!

--* ページのまとめ *--
1.iPhone iOSで対戦型ゲームを作ろう!#1
2.iPhone iOSで対戦型ゲームを作ろう!#2
3.iPhone iOSで対戦型ゲームを作ろう!#3
4.iPhone iOSで対戦型ゲームを作ろう!#4
5.iPhone iOSで対戦型ゲームを作ろう!#5
6.iPhone iOSで対戦型ゲームを作ろう!#6
7.iPhone iOSで対戦型ゲームを作ろう!#7
8.iPhone iOSで対戦型ゲームを作ろう!#8
9.iPhone iOSで対戦型ゲームを作ろう!#9
10.iPhone iOSで対戦型ゲームを作ろう!まとめ
THEME:プログラミング | GENRE:コンピュータ |

iPhone iOSで対戦型ゲームを作ろう!#3

今回は、Buttonから指が離れると、爆弾が飛んでいくプログラムです。

爆弾のクラスを追加
MyUFOの時と同じ要領で
1301112.png

1301104.png
「Cocoa Touch」→「Objective-C Class」→「Next」

1301113.png
Class → MyBom
Subclass → UIImageView
「Next」→「Create」をクリック
1301114.png
クラス作り終わり。

Bom用のImageViewを配置して、後はMyUFOと同じに
MyBom.pngをSupporting FilesにドロップしてをImageでMyBom.pngを選択
サイズをWidth:48 / Height:48に変更
MyBom.png

もちろんClassはMyBomを選択
1301115.png

1301118.png
こんな感じに配置

では、Buttonから指が離れたら、Bomを発射するプログラムを書いて行こう。
MyUFO.hに
#import "MyBom.h"
IBOutlet MyBom *mybom;
を追加
1301116.png

そして、連携。
1301117.png

もう一行追加
1301119.png
勝手に連携する・・。これでいいのかな?

おまじないのMyUFO.mに一行追加
1301120.png

Buttonから指が離れた時の処理を追加
touchesEndedを使用
1301121.png
これで、Buttonを離れた時に、ログ画面に"UP"が表示され
この一行を追加すると、
1301122.png
MyBomが目の前に移動するようになる。
1301134.png
こんな感じ

この、目の前にあるBomを、タイマー使って移動させる。

まずは、タイマーをセットのおまじない。
タイマーに使う変数を MyUFO.hに
1301123.png

タイマー発動
1/60間隔でタイマーが動くようにして
1301124.png

タイマーが動いて、Bomを動かす処理
1301125.png
Bomが12ドットずつ上に移動して、y座標が0より小さくなったらタイマーを止める

では、シミュレータRun!
1301126.png

お!
Bomがいい感じのところで止まった。

でも、パシ!パシ!と連打すると動きが変になってしまう・・・。
タイマーを連続で発動されタイマーを止める処理が完了できなくなってしまっている
なら、Bomが上で止まるまで、連打を受付ないように

まずは、Bomが動いているかのフラグの変数設定
1301127.png

フラグをみて連打できないようい if文で回避
1301128.png

動きが止まったら
フラグをNO元に戻す
1301129.png
これで、連打しても変な動きをしなくなった。

しかぁ〜し!
Bomが表示したまま・・・。

まずは、この実行した時にポツンと画面の真ん中にあるこの状態を解消
1301118.png
初めに動くインスタンス awakeFromNibを追加
この中にBomを消すように
1301130.png

このままでは、Bomがず〜と!消えたままなので
発射 → 表示
1301131.png

終了 → 消す
1301132.png

を追加して
シミュレータ Run!
1301133.png
できたぁ〜!
今回は、これで終わり。

次回は、敵を表示してランダムに動かしまぁ〜す。

--* ページのまとめ *--
1.iPhone iOSで対戦型ゲームを作ろう!#1
2.iPhone iOSで対戦型ゲームを作ろう!#2
3.iPhone iOSで対戦型ゲームを作ろう!#3
4.iPhone iOSで対戦型ゲームを作ろう!#4
5.iPhone iOSで対戦型ゲームを作ろう!#5
6.iPhone iOSで対戦型ゲームを作ろう!#6
7.iPhone iOSで対戦型ゲームを作ろう!#7
8.iPhone iOSで対戦型ゲームを作ろう!#8
9.iPhone iOSで対戦型ゲームを作ろう!#9
10.iPhone iOSで対戦型ゲームを作ろう!まとめ
THEME:プログラミング | GENRE:コンピュータ |
 
検索フォーム
QRコード
QRコード
ブロとも申請フォーム
FC2カウンター
ビリリティピルズ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。