脱出ゲーム 5月27~31日

プレイヤーがアイテムと衝突して衝突したらアイテムを持つボタンが出てくるのでボタンを押したらアイテムの位置をプレイヤーの位置に移動させる。

アイテム所持中にブロックと衝突しするとボタンが表示されて

ボタンを押すと所持しているアイテムがブロックの上に置かれる。

アイテムを所持していないときにブロックの上にあるアイテムと衝突すると

アイテム所持のボタンが表示されるのでボタンを押すとブロックの

上のアイテムがプレイヤーの位置に移動する。

アイテムを所持しているときにアイテムに衝突してもアイテム取得ボタンは表示されない。

アイテムを所持していないときにブロックと衝突してもボタンが表示されない。

アイテムを所持していてブロックと衝突してもアイテムがブロックの上にあるとボタンが表示されない。

などのスクリプトを作成し、Unity上でちゃんと思っている通りに実行されるかチェックした。

脱出ゲーム

Animationの編集適用

画面のシーン遷移を編集中

タイトル→ゲームメイン→クリア画面 のような感じで作っていきます

やっとゲームらしくなってきました

UnityでSAVE

こんにちは、Daikiです。
今回は、Unityでデータのセーブをしてみようと思います。

まず、test.datファイルを作ってみようと思います。

[csharp]
using UnityEngine;
using System.Collections;
using System.IO;

public class save : MonoBehaviour {

//起動時に一回だけ呼び出される処理
void Start () {

FileStream binaryFile = new FileStream("test.dat", FileMode.Create, FileAccess.ReadWrite);

}
}

[/csharp]

これで、プロジェクトの中にtest.datができたと思います。
次に、このtest.datに数字と文字列を書き込んでみましょう。

[csharp]
public class save : MonoBehaviour {

//起動時に一回だけ呼び出される処理
void Start () {

FileStream binaryFile = new FileStream("test.dat", FileMode.Create, FileAccess.ReadWrite);
BinaryWriter writer = new BinaryWriter(binaryFile);

//書き込み
writer.Write(123456789); // int型
writer.Write("test string"); // 文字列型

}
}

[/csharp]

test.datに何か文字が書き込まれたと思います。
次に、この書き込んだデータを読み込んでみましょう

[csharp]
using UnityEngine;
using System.Collections;
using System.IO;

public class save : MonoBehaviour {

public int readInteger;
public string readString;

//起動時に一回だけ呼び出される処理
void Start () {

FileStream binaryFile = new FileStream("test.dat", FileMode.Create, FileAccess.ReadWrite);
BinaryReader reader = new BinaryReader(binaryFile);
BinaryWriter writer = new BinaryWriter(binaryFile);

//書き込み
writer.Write(123456789); // int型
writer.Write("test string"); // 文字列型

binaryFile.Seek(0, SeekOrigin.Begin);

readInteger = reader.ReadInt32();// int型
readString = reader.ReadString();// 文字列型

//デバックログ表示
Debug.Log("Integer: " + readInteger);
Debug.Log("String: " + readString);

}
}

[/csharp]

参考 FileStream

ローカルセーブ(Android,IOS用)

PlayerPrefsクラス

<サンプルソース>

[csharp]
using UnityEngine;

public class Save : MonoBehaviour {

public string str;
public int numInt;
public float numFloat;

void Start () {

//Key(第一引数)に値(第二引数)が格納される
PlayerPrefs.SetString("saveString", "OK");
PlayerPrefs.SetInt("saveInt", 10);
PlayerPrefs.SetFloat("saveFloat", 0.1);

//Keyに格納された値を呼び出し変数に代入
str = PlayerPrefs.GetString("saveString");
numInt = PlayerPrefs.GetString("saveInt");
numFloat = PlayerPrefs.GetString("saveFloat");

}

void OnGUI (){
GUI.Box(new Rect(100,100,20,200), "" + str + ":" + numInt + ":" + numFloat);
}
}
[/csharp]

実行結果

画面上でOK:10:0.1と表示されれば成功

また、アプリケーションのセーブデータを実機で削除する場合
「設定」→「アプリケーション」→「アプリケーション管理」→「実機に書き出したアプリケーション」→「データ削除」

セーブされる場所

Macスタンドアローン(.app)
~/Library/Preferences/unity.[company name].[product name].plist

Windowsスタンドアローン(.exe)
HKCUSoftware[company name][product name]

Web Player(Mac)
~/Library/Preferences/Unity/WebPlayerPrefs

Web Player(Win)
APPDATAUnityWebPlayerPrefs

参考 PlayerPrefs

画面に書き込んだものが表示されれば成功です。
お疲れ様でした。

HOME

実践するvim 超初級編

スタートメニューの
プログラムとファイルの検索から”Tera Term”を開いて実行します。

ホスト : 172.16.28.247
ヒストリにチェック
TCPポート : 22
サービス : SSH
SSHバージョン : SSH2
プロトコル : UNSPEC

vim_01

ユーザ名 gt2[出席番号]
パスフレーズ 前自分で作ったパスワード

vim_02

サーバーにログインできたらOKです!!

vim_00

はじめに

vimは、通常のエディタと異なり、モードというものがあります。
慣れるためには時間が掛かりますが、慣れてしまえば超高速で文章を編集できるようになります。

今回は以下の3つのモードの
基本的な操作について講義していきたいと思います。


1.ノーマルモード
2.挿入モード
3.ヴィジュアルモード

ノーマルモードについて

vimを起動した状態がノーマルモードです。
ノーマルモードは名前の通りに、ノーマルなモードです。
主に

・カーソルの移動
・文章の削除
・他のモードへの移行

を行います。

挿入モードについて

ノーマルモード時に、”i”もしくは”a”等を押すと挿入モードに移行します。
挿入モードでは、
文章をファイルに書き込むことが出来ます。
ノーマルモードに戻るためにはエスケープキーを押します。

ヴィジュアルモードについて

ノーマルモード時に、”v”等を押すとヴィジュアルモードに移行します。
ヴィジュアルモードに移行したカーソルの位置から、移動したカーソル
の位置までの文章を選択することができます。

というわけで、vimを触ってみましょう!!

下準備

コマンドラインにvimと打ちこんで、エンターを押します。
vimが立ち上がります。

vim_03

“i”を押して、挿入モードへと移行します。

vim_04

“hoge”と打ち込んでエンターを押します。
これを7~10回ほどリピートします。

vim_05

下準備終了です!!

カーソルの移動

カーソルの移動をするためにはノーマルモードへと移行する必要があります。
エスケープキーを押して、ノーマルモードへと移行しましょう。
ノーマルモードへと移行したらカーソルの移動を実践してみましょう。

カーソルの移動には”h”,”j”,”k”,”l”の4つのキーを使います。
h は 左
j は 下
k は 上
l は 右
へと移動します。

vim_06

地獄の特訓

習うより慣れろ!!という事で、
手に馴染ませるためにカーソル移動の特訓をします。
さきほど挿入したhogeのまわりをグルグルと移動させてみてください。
全員が操作ミスをせず、5周できたら、次の項目へと進みます。

挿入してみよう

ノーマルモードの状態で、3行目のhogeのgまで、カーソルを移動させてください
準備ができたら挿入モードを使ってみたいと思います。

vim_07

まずは”a”を押して下さい!!
選択していた文字の右側から文字を挿入することができます。
確認したら、ノーマルモードへと戻ります。

vim_08

次は”i”を押します。
今度は文字の左側から文字を挿入することができます。
確認したら、ノーマルモードへと戻ります。

vim_09

“A”つまり”shift + a”を押します。
カーソルのある行の最後に文章を挿入します。
このように、vimでは小文字と大文字で機能が全く異なるので注意してください。

vim_10

“I”つまり”shift + i”を押すと、
カーソルのある行の最初に文章を挿入します。

vim_11

現在の行と次の行の間に文章を挿入する

適当な行へとカーソルを移動させて、”o”を押してください。
現在の行と下の行の間に、文章を記述することができます。

vim_12

現在の行と上の行の場合は、”shift + o”となります。

ファイルの頭と末尾に移動する

ノーマルモードの時に、
“:1″と入力すると、ファイルの頭の行へと移動できます。
逆に、ファイルの末尾の行へと移動する場合には”:$”と入力します。

文字を削除してみよう

ノーマルモードで文字の削除をしてみます。
文字の削除には”x”を押します
一番下の行のhogeを削除してみましょう。

行の削除をしてみよう

消したい行までカーソルを移動します。
行の削除をするには”dd”と入力します。
一番下の行のhogeを削除してみましょう。

文字のコピー

vimでは文字のコピーのことをヤンクと言います。
ヤンクには便利な色々な方法がありますが、
今回はヴィジュアルモードを使ったものだけに留めておきます。

まずは、一行目のhogeの後ろに、半角スペースを一つ空けて、aiueoと挿入します。

vim_13

このaiueoをヴィジュアルモードを使ってヤンクしてみようと思います!!

aiueoのaへとカーソルを移動させます。

vim_14

ノーマルモードからヴィジュアルモードへと移行するために”v”を押します。

vim_15

そのまま、aiueoのoへと移動します。

vim_16

aiueoの文字色が反転していることを確認したら、yを押します。
その後、適当なところで p を押します。
aiueo がペーストされていれば成功です。

vim_17

ちなみに、dd で削除された行は、自動的にヤンクされています

あー・・・文繋げたいわー・・・

3行目の文を2行目の文の後に繋げてみましょう。

2行目で”J”を入力、つまり”shift + j”を入力すると、3行目が2行目のあとに繋がります。

vim_22

ファイルを保存する

vimでファイルを保存するには、ノーマルモードの時に :w と入力します。
しかし、vimを立ち上げる時、ファイル名を指定していなかったので、:wだけでは保存することができません。

というわけで、名前を付けて保存してみましょう。

:w “filename” と打ち込むだけです。

vim_18

これで保存することができました。

ここで一旦vimを終了してみましょう。

:q と入力して、vimを終了します。

コマンドラインで ls と入力します。

vim_19

保存したファイルが存在しているのを確認したら

vim “filename” と打ち込みます。

vim_20

さきほどのファイルが開けたらOKです。

以上。

vimtutor ja とコマンドラインに打ち込むと、20 ~ 30分でvim中級者レベル並には
扱えるようになるので、やってみてください。

vim_21

Unityの使い方[Ⅳ] Map生成②

こんにちは、Daikiです。
今回は、前回途中だった、Mapを作っていこうと思います。

[Ⅲ]Map生成②

はじめに木のAssetImportしようと思います。
AssetsImport PackageTree Creatorをクリックします。
unity32

次のような画面が表示されたら、Importを押します。
unity33

Terrainのボタンの中から、木のマークのボタンをクリックし、
Edit Treesをクリックします。
unity30

次のようなものが表示されたら、Add Treeをクリックします。
unity31

Add Treeが表示されたら、右にある小さい丸をクリックし、好きなオブジェクトをクリックします。
unity34

クリックしたオブジェクトの名前が表示されたらAddを押します。
unity35

次にScene画面をクリックします、すると、木が生成されます。
unity37

後は、好きなようにMapを作ってみましょう

Unityの使い方[Ⅲ]←前                                    HOME

CodeIgniterのライセンス問題についてわかりやすい記事を発見

こちらです。

CI3.0のライセンス互換性を表にして表してあったり、ポストCIになりうるCI派生のフレームワークの名前が出してあったりしています。

GPL、そしてOSLについては以前の記事に詳しく書いてあるサイトのリンクが張ってありますのでそちらを参照してください。僕では説明が上手く説明できません。

CIを使ってる方は1度、目を通しておくといいかもしれません。

CodeIgniterの事を調べていたら出てきた記事

こんな記事が出てきた。

2013年に注目されるであろうPHPフレームワークLaravelだそうだ。

以前書いた記事でCodeigniter3.0のライセンスについての事を少し話題に出しましたが。やはりライセンスが変わってしまう問題で少しCodeIgniterの人気が落ちてきているそうです。

PHPフレームワークをこれから使ってみたいって方がいたらLaravelを調べてみるのもいいかもしれません。

Tank_AuthをLinuxで動かすと

登録画面の認証コードが表示されていない。

問題

XAMPPだとこうなってるのになぜだろう?問題をこうしたい

そういえば画像がどうして毎回変わるのかわかっていなかったので色々ためしたところ。

Capchaフォルダにて増殖する画像を発見、web上の登録画面をリロードするたびにcapchaフォルダに新しい画像が作成され、それを参照し画面表示をされているようです。増えたもの増えていく

WinSCPにぶち込んだ制作中のプロジェクトの中を見ながら次はサーバー側のものをリロードすると、作成されていないようだ。

ないってことは参照されない=映らない

当たり前ですよ。

Linuxでなんで作成できてないか林君が調べてくれてますが、なかなかヒットせず。

問題解決には遠そうです。

CCAnimationの基本

cocos2d-xにおける、アニメーションの基本的な使い方です。

[cpp]
/// アニメーションフレームの生成
CCAnimation* pAnimation = CCAnimation::create();

/// アニメーションフレームに画像を追加
/// [例]
/// hoge_00.png
/// hoge_01.png
/// hoge_02.png
/// hoge_03.png
/// という画像があるとします
for( int i=0; i<4; i++ )
{
char filename[128] = {0};
sprintf(filename,"hoge_%02d.png",i);
pAnimation->addSpriteFrameWithFileName(filename);
}

/// アニメーションを切り替える速度を決める
/// ※1.0fで一秒になります
pAnimation->setDelayPerUnit( 0.1f );

/// 無限ループさせる
/// [例]
/// 1 … 一回ループさせる
/// 2 … 二回ループさせる
/// -1 … 無限ループさせる
pAnimation->setLoops(-1);

/// アニメーションの生成
CCAnimate* pAnimate = CCAnimate::create(pAnimation);

/// スプライトの生成
CCSprite* pSprite = CCSprite::create();

/// レイヤーにスプライトを追加
this->addChild(pSprite);

/// スプライト座標を設定する
pSprite->setPosition(CCPointMake(0.0f,0.0f));

/// アニメーションを実行する
pSprite->runAction(pAnimate);
[/cpp]

ポイントとしては、

[cpp]

sprintf(filename,"hoge_%02d.png",i);

[/cpp]

の、%02dという部分ですが、

これは、例えば i が 1 の時、

“hoge_01.png”となります。

もう一つ例を上げておくと、

[cpp]

sprintf(filename,"hoge_%01d.png",i);

[/cpp]

の時、同じように i が 1 の場合、

“hoge_1.png”となります。

後は、

[cpp]

pAnimation->setDelayPerUnit( 0.1f );

[/cpp]

の、

setDelayPerUnitの引数は、フレーム単位ではなくて秒単位です。

以上です。

脱出ゲーム5月20~24日

プレイヤーと物のあたり判定、物を持った時の物の移動、物を置いた時の物の移動、

などのスクリプトの作成。

↓オブジェクト同士が衝突したときに呼び出される↓

public void OnTriggerEnter(Collider other){

ここに衝突したときの処理を書く

}