2014年3月22日土曜日

【unity】【基本のk】ブロックくzs・・・BlockCrusherを作ってみました

unity3Dでブロック崩しを作ってみました。

今後これを基にパーティクルとかサウンドつけたりしてみたいと思います。

BlockCrusher


【参考】
Unity3Dのゲームの作り方講座
Unityでブロック崩し

2014年3月15日土曜日

【ゲーム】画面の左右が繋がっているように見せる

キャラクターが画面の右端(左端)を越えたら左端(右端)から出てくるようにする方法です。

右端からはみ出た部分を左端から出したい場合を考えました。

①操作キャラが画面の端を越えたら新しいキャラクターを生成

②操作キャラがはみ出た分、逆側から新しいキャラクターを出す




javascript(enchant.js)による実装




キャラクターのオブジェクトを2体生成しないで済む方法が思いつきません(泣)

2014年3月14日金曜日

enchant.jsでシーンを切り替える

enchant.jsでシーンを切り替える方法です。

pushScene:ゲームにシーンを追加する
popScene:現在のシーンを取り出す
replaceScene:現在のシーンを置き換える

ゲームのタイトル画面から実際のゲーム画面への切り替えとかが出来ますね。

androidでいうところのActivityの遷移と同じですね。

sceneの内容は保持できるんでしょうか。




【参考】
enchant.jsを用いたゲーム制作-シーンの切り替えについて

2014年3月13日木曜日

背景の無限スクロール

1枚の背景画像を使って無限に横スクロールさせる方法です。

①画面より長い背景画像を左端に表示

②背景画像を左に移動させることでスクロールさせます

③背景画像の右端が画面端に到達したら背景画像を①の位置に戻します

移動させたままだと④のように画面内に背景が表示されなくなってしまいます。





javascript(enchant.js)による背景の無限スクロール

2014年3月12日水曜日

Web上へのUnityゲームお試し投稿

Unityで作ったゲームをwebに公開するテストです。

Unityで作成したゲームをwebでプレイするためにはUnity Web Playerというプラグインをブラウザにインストール必要があります。

下記リンクをクリックしたらインストールするよう促されます。


ゲーム


【操作方法】
マウスの右クリック:ボールが現れて左方向へ放物線を描いて飛ぶ
マウスの左クリック:キューブがジャンプする

【遊び方的な】
1.マウスの右クリックでボールを飛ばす
2.マウスの左クリックでキューブをジャンプさせ、ボールが画面左に行くのを阻止する


右クリックするとメニューが開かれるからフルスクリーン推奨って感じですね。

最初からフルスクリーン状態ってどうやるんだろうか。。

ちょっとUnityが楽しいかもしれないです^^

【参考】
[Unity3D]Web Playerで作ったゲームをWebで公開

2013年6月5日水曜日

和暦変換

JapaneseImperialCalendarクラスはAndroidで和暦表示できないんですかね。。
Java 6で和暦を使う
プログラミングお役立ちメモ

private String getJpYear(Calendar calendar) {
    //西暦から和暦を取得する
    //和暦変換テーブル
    String warekiTable[][] = {
        {"18680908","19120729", "明治"},   //明治          
        {"19120730","19261224", "大正"},   //大正
            {"19261225","19890107", "昭和"},   //昭和
            {"19890108","99991231", "平成"}};  //平成
 
    //YYYYMMDDの形式に変換する
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    String ymd = sdf.format(calendar.getTime());
    //暦変換テーブルをサーチする
    int i = 0;
    for (i=0; i<warekiTable.length; i++) {
            //当該西暦が開始年以上で最終年以下ならbreak
            if (ymd.compareTo(warekiTable[i][0]) >= 0 && ymd.compareTo(warekiTable[i][1]) <= 0) {
                break;
            }
        }
 
        //暦テーブルに該当レコードがあれば、和暦年を計算する
        if (i < warekiTable.length) {
            int jpYear = calendar.get(Calendar.YEAR) - Integer.parseInt(warekiTable[i][0].substring(0,4)) + 1;
            //和号+和暦年を返す
            return warekiTable[i][2] + jpYear;
        } else {
        //明治より前は西暦で返す
            return calendar.get(Calendar.YEAR).toString();
        }   
    }

日付処理(Calendarクラス)

Calendarクラス

・インスタンス取得
Calendar calendar Calendar.getInstance();

・Dateオブジェクト取得
calendar.getTime();

・年取得
int year = calendar.get(Calendar.YEAR);

・月取得
int month = calendar.get(Calendar.MONTH) + 1;

・日取得
int day = calendar.get(Calendar.DATE);

・時取得
int hour = calendar.get(Calendar.HOUR_OF_DAY);

・分取得
int minute = calendar.get(Calendar.MINUTE);

・秒取得
int second = calendar.get(Calendar.SECOND);

・曜日取得
StringBuffer dow = new StringBuffer();
switch (calendar.get(Calendar.DAY_OF_WEEK)) {
    case Calendar.SUNDAY: dow.append("日曜日"); break;
    case Calendar.MONDAY: dow.append("月曜日"); break;
    case Calendar.TUESDAY: dow.append("火曜日"); break;
    case Calendar.WEDNESDAY: dow.append("水曜日"); break;
    case Calendar.THURSDAY: dow.append("木曜日"); break;
    case Calendar.FRIDAY: dow.append("金曜日"); break;
    case Calendar.SATURDAY: dow.append("土曜日"); break;
}