iphone」タグアーカイブ

次のiPhoneミニゲームはなにをつくるか?ゲームキットGame Kitのお値段,iPhone

次のiPhoneミニゲームはなにをつくるか?ゲームキットGame Kitのお値段,iPhone

先日、やっと2作目が完成しました。1作目よりは順調に進みました。もうちょっといろいろなアニメーションを追加したかったのですが、自分で決めたスケジュールを超えそうなので、あきらめました。

次回作の3作目はなにをつくろうか考えています。ユニティで作っても良いと思っています。
でも、C#なんですね、ユニティは。そうするとcocos2dの方がいいのかもとかいろいろと考えてします。Unityは3万もしたのに、いまは学習するモチベーションがなくて使ってないです。
もっとやる気を上げないともったいないですね。

3作目候補自作アイフォンアプリ

・横スクロールアクション
・RPG(スモールエリア、レベル1くらいの小さいステップ程度)
・パックマン風迷路型アクション
・タップゲーム(1,2作品)

 まずは、ゲームキットを探してみました。
 ゲームキットを探す理由は、ゲームを簡単に作って早く完成させて発表したいからです。
 かつてはコーディングの勉強をしたいために、ゲームを作ろうと思ってました。でも、飽きてしまって結局、何も残らないことに気づきました。
 やっぱりゲームやアプリを作ったならば、きちんと発表したりして残しておきたいものです。 
多少お金はかかりますが、作品として早く完成できるようにしたいと思います。

 ココスによって、画像の表示やアニメーションが非常に楽になりました。
 これは、画像、音楽、コーディングを一人で全部を担当し、変更箇所も自分でできるので非常に楽でした。でも、RPGやシューティング、物理演算処理となると、個人の限界を超えてしまします。
 そこで、これらのコーディングの手間を省くキットが発売されています。

cocos2dゲームキットGameKit

購入したら、どんな感じが報告したいと思います。

50ドルから100ドルで発売されているキット

High Defintion Video Tutorials for iOS Development using XCode and Cocos2d PLUS 3 iOS Starter Kits

RPGのキット

Make iPhone Games: Cocos2D Tutorial & Game Engine – iPhone Game Kit

その他

3D Computer Graphic グラフィック: iphoneアプリで副収入iAdの設定 – Google 検索メモ

前回のアイフォンアプリ開発についての情報2作目を登録申請しました。

アイフォン解像度

アイフォンアプリ製作Unityピンポンゲーム学習中 5Aから5C 動画

Unityピンポンゲーム学習中 5Aから5C 動画

今回は、シーン間の変数を保持するPlayerPrefsとスコアです。

Unity tutorial – Pong Game – How To Make Mobile Games – part 5A


Unity tutorial – Pong Game – How To Make Mobile Games – part 5B
scoreの表示、PlayerPrefs 変数保持プロパティ

MainGame.js
CreateEmptyで作ったオブジェクトに設定します。
Scoreの点数を増加させます。


var score3DText:TextMesh;
private var score:int=0;

function Awake(){
	InvokeRepeating("UpdateScore",0.05,0.05);
}
function Start () {

}

function UpdateScore () {
	score+=1;
	score3DText.text="Score:"+score.ToString();
	
}

function GameOver(){
//ball.jsで、使用する関数になります。
	if(score>PlayerPrefs.GetInt("highScore")){
		PlayerPrefs.SetInt("highScore",score);
	}
	Application.LoadLevel("menu");
}


Unity tutorial – Pong Game – How To Make Mobile Games – part 5C
ゲーム画面でハイスコアになったときに、最初の画面にハイスコアを表示させる。
つまり異なるシーン間で変数をやりとりする。

ballオブジェクトにGeneralScriptをかぶせる
ball.jsとMainGame.jsは相互関係になります。
ここがみそです。
ballにGeneralScriptをかぶせる

menuシーンに、highScore3DTextを作成します。

ball.js
var mainGameScript:MainGame;

function Awake(){
	rigidbody.AddForce(4,4,0,ForceMode.Impulse);
	
	//4c
	InvokeRepeating("IncreaseBallVelocity",2,2);//2sec,2sec= start time, repeat time
}

function Update(){

	if(transform.position.y<-5){
		//Application.LoadLevel("menu");
		mainGameScript.GameOver();
		
	}
}

//4c
function IncreaseBallVelocity(){
	rigidbody.velocity*=1.05;
	Debug.Log("velocity:"+rigidbody.velocity);
}

MenuScene.jsも書き換えます。そして、MenuシーンのGeneralScriptのhigh Scrore 3DTextに3DTextであるhighScore3DTextを選択します。
ここがみそです。
generalscript

private var ray:Ray;
private var rayCastHit:RaycastHit;

var highScore3DText:TextMesh;

function Awake(){
	highScore3DText.text="High Score: "+ PlayerPrefs.GetInt("highScore").ToString();
}
function Start () {

}

function Update () {
	if(Input.GetMouseButtonDown(0)){
		ray=Camera.main.ScreenPointToRay(Input.mousePosition);
		if(Physics.Raycast(ray,rayCastHit)){
			if(rayCastHit.transform.name=="playButton"){
				Application.LoadLevel("pon2");
			}
		}
	}
}

前回のUnity学習動画ブログ

アイフォンアプリ制作のSQLite3を使ってDB、今日のエラー 

今日のエラー アイフォンアプリ制作のSQLite3を使ってDB、エラー

sqlite3_step エラーで検索して得たネット検索の一部抜粋
実機確認で正常に動作しない場合の対処


databaseName=@”Data.db3″
NSArray *paths = NSSearchPathForDirectoriesInDomains
   (NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDir = [paths objectAtIndex:0];

NSString *dbPath =
  [documentsDir stringByAppendingPathComponent:databaseName];

これでどうでしょうか。

現在のフォルダは・・・/iPhone Simulator/4.1ですのでシミュレータのみになると思います。

www.sqlite.org column
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);

NEXT次の対策 

iPhoneアプリ開発、その(81) いくぜ解析SQLiteBooks!

>このブログを参考にさせてもらいました。自分のselect文が間違っている様な気がしてきました。いままで、SQLite3のDBファイルが悪い、間違いと思っていましたが、単に、勘違いをしているように思います。

一旦整理します。

正常にDBからカラム列を取得できていません。
今のところで考えられる原因は、

「DBファイルSQLite3ファイルが正しく作成できていない。」
と考えていました。
他のコードは本を参考にしているし、ほんのソースは実行できている。

では、自分で作成したテーブルを確認します。
現在のテーブルは3つのカラム列があります。
テーブル名はcd
フィールド名はそれぞれ
card_id, fore, back

そこで、セレクト文を以下のようにして、comlumnで取得しようとしました。

(1)select card_id form cd; 1つのカラム列を取得したい
(1-2)select back from cd; 1つのカラム列を取得したい
(2)select card_id,fore,back from cd; 3つのカラム列を取得したい

全部エラーとなってDBから情報を取得できていません。

<検証してみましょう。>

・具体的な指定
(1)select card_id form cd;とした場合
sqlite3_column_int(statement,0);//3つのカラム列の1番目で0

(1-2)select back from cd;とした場合
誤り? sqlite3_column_int(statement,2);//3つのカラム列の3番目で2
正  sqlite3_column_int(statement,0);//3つのカラム列の3番目で2であるが、セレクト文で指定したのは一つなので、0???

(2)select card_id,fore,back from cd;
(1-2)の例で行けば、
ここで、”back”の値を取得したいとすれば、
sqlite3_column_int(statement,2);//3つのカラム列の3番目でセレクト文でカラム列を3つ指定しているので、その指定が、0,1,2とする。

つまり、
sqlite3_column_int(sqlite3_stmt*, int iCol)の
int iColは、セレクト文の指定カラム列から取得したカラム列の順番の番号-1ということでしょうか。

なので、いままで、テーブルに設定されたカラム列の順番をint iColに指定してきました。
そのため、例えば、
(1-2)select back from cd;のように、セレクト文を指定して、これは、指定が1つしかないので、本来は”0”なのですが、テーブルに設定されたカラム列の順番から考えると3-1=2なので

sqlite3_column_int(statement,2);とするとNULLが返ってきて
セレクト文は1つなので、
sqlite3_column_int(statement,0);が正しい。

なのでしょうか?
試してみます。

解答

1.SQLite3のファイルは問題なし。
2.sqlite3_column_int(sqlite3_stmt*, int iCol)の
int iColは、Select文で指定するカラム列を基準に考える。DBのカラム列の順番ではない。
つまり、指定する番号である値をセレクト文に合わせて変更していなかったことが原因であり、勘違いしていたという思い込みでした。
3.思い込みを無くして、正しくAPI、関数を理解しましょう。
4.悩んだところにこだわるのは、1,2日間まで。それ以上は他の部分を先に進めましょう。
  時間のある時にじっくりと調べればよいのです。
  解決しても大局からすれば、ほんの僅かな成果しかありません。
  プログラムは動いてこそ意味があります。プログラムの研究をしているのではありません。動かしたいのです。