【unity+php+mariaDBでhiscoreの管理.その2】

unity+php+mariaDBでhiscoreの管理.その2


【unity+php+mariaDBでhiscoreの管理.その1】

unity+php+mariaDBでhiscoreの管理.その1


【久しぶりにUnityC#でローグライクなゲーム作った】

久しぶりにUnityC#でローグライクなゲーム作りました。
5日間もかかってしまいましたが、お暇な人はやってみてください。
18MBあるので注意が必要です。


【Unity2018、movie textureはVideoPlayerになったのね】

Unity2018の動画テクスチャーは、VideoPlayerになったのね。
mp4だと天地逆になるから、180度回転させてね。
すげー楽だわw

【Unity5、movie textureにはまった。2回はexeとapkで成功したのに】

unity標準のmovie textureは、androidとiosに対応してないとのことでEasyMovieTextuerとOpenCVという有料アセットを購入。
OpenCVだと、音声が含まれるaviの再生がどうしても出来ないのと、なぜかandoid版がはき出せない。
音声とムービーの同期はプログラム側で何とかなるけど、androidのapkをはき出せないんじゃ意味ない。
EasyMovieTextuerを使ったら、なぜか2度だけexeとapkはき出せたけど、その後ははき出せん。どはまりちゅう。
macで作ってもダメ。
何故二回だけ成功したんだろう。不思議だ。
そもそもサンプルプログラムがwin/macの両方で動かない。どうしたんだろう。

【Unity5.4beta、movie textureとアセットバンドル(BuildPipeline)について】

Unity5.4beta、これの目玉はmovie textureではないでしょうか。今色々解析中。今まで他のアセット買わないといけなかったけど、無料だ無料!
あと、アセットバンドル、BuildPipelineで旧形式といわれてエラー吐かれてコンパイル出来ない。参ったなぁ

【Unity5、ちょっとだけMixer触ってみたけど、結局フェードインフェードアウトの処理は自分でしないといけないのですね】

Unity5、ちょっとだけMixer触ってみたけど、結局フェードインフェードアウトの処理は自分でしないといけないのですね
.volumeの値の変更。今までと変わらないけどクロスフェードの時にイコライザーが動くと楽しいですね。
今、FPS作っているんですがスナイプモードの実装めんどくさいので、カメラの位置を変えて、tr.LookAt(target)をtr.rotation=target.rotationに変更しただけです^^;
軽くMusicManagerを組んで、コライダーから別のコライダーに移動するときに曲のクロスフェードさせたんですが、今のところmixerはグループでon/off出来たりグループの下位のトラックにエフェクトを掛けたり視覚的になっただけであんまり恩恵感じませんね。
グループ単位で下位のmixierのvolume変更は出来ないっぽい。
今日も4時間。あと2日間の計16時間で適当にFPSもどき組めれば良いかなと考えてます。

【Unity5、やっと使い始めた雑感(UnityPro5.3.1+C#)】

とりあえずインストール。VS2015のcommunity入れるのは嫌だったので、VS2015Proを購入。
VS2015のおかげでIMEでのコメント入力が楽になりました。
元々、VC使いでしたが、ソースの入力はasm/c++はmifes、UnityC#だけMono使っておりましたが、まあインテリセンスも効くし、VS2015のIDEに慣れるのには丁度いいと思いました。

まずは、addForce系が変わりましたね。
rb = GetComponent();
rb.AddForce(transform.forward * 100.0f);
とかしないといけないので、出来るだけAWAKEかSTARTUPでRigidbodyを取得しておく方が良いかも。

それとサウンド。
ミキサー機能が付いたので、高度なサウンドマネージャーを自作する必要がなくなり、楽になりました。
結構仕様が変わっていますね^^;
配列使って音楽ならす例
AudioSourceを付けて、clipは付けない。
//宣言
public AudioSource aSource;
public AudioClip[] aClip;

//AudioSourceを取得
void Start () {
aSource = GetComponent();
}

//適当な番号のclipを鳴らす
//インスペクタのaClipに鳴らしたいclipを設定しておき、その番号に対応したclipを鳴らす
aSource.PlayOneShot(aClip[0]);

まあ、こんな感じで。

audioSource毎にミキサーの出力先を設定できるみたいなので、曲a,曲b...、環境音a,環境音b...のクロスフェーダは何も考えなくて作れそう。

Renderer
気楽に子、孫オブジェクトのRendererにアクセスできなくなったので、ここではRendererのon/offの方法を模索してみた。
まず、対象にtagを付ける。ここでは"FLASH"

//宣言
public GameObject _rgo;
public Renderer _r;

//Rendererの取得と一時非表示にする
void Start () {
_rgo = GameObject.FindWithTag("FLASH");
_r = _rgo.GetComponent();
_r.enabled = false;
}

//表示
_r.enabled = true;

//非表示
_r.enabled = false;

こんな感じ。もっと良い方法無いかな
追記2015/01/17
FLASHのTAGを付けたRendererをon/offすると、Unityデバッガでerrorを吐くので、Colliderを削除して下さい。

UNET
これはまだ試していませんが、4人制限が無くなりP2Pだけで無くクライアントサーバモデルにも出来る模様。
完全にPhotonを狙い撃ちしてますね。

まだ、触って4時間なのでこれくらいで。

【複数の他のゲームオブジェクトに付けられたスクリプトの探し方】

まあ、自分以外の他のゲームオブジェクトに付いているスクリプトをあれこれしたいと切ってありますよね
一番簡単なのは、対象オブジェクトにhogeCtrl.csをつけて、
探すときは
hogeCtrl[] hoges = FindObjectsOfTypes(tupeof(hogeCtrl)) as hogeCtrl[];
ってすれば、OK。
他にも方法は色々あるけど、これが一番簡単。

【レイヤーで当たり判定をするのもいいけど、プログラマー的にはTAGであたり判定したい】

レイアーは地形とかだけに使って、あたり判定はTAGでしたいんだけど、まあ、PhyscsManagerでデザイナーさんが勝手に設定できるからありって言えばありかな。

【複数の他のゲームオブジェクトに付けられたスクリプトの探し方】

まあ、自分以外の他のゲームオブジェクトに付いているスクリプトをあれこれしたいと切ってありますよね
一番簡単なのは、対象オブジェクトにhogeCtrl.csをつけて、
探すときは
hogeCtrl[] hoges = FindObjectsOfTypes(tupeof(hogeCtrl)) as hogeCtrl[];
ってすれば、OK。
他にも方法は色々あるけど、これが一番簡単。

【敵が自機に狙い撃ちする玉やある地点までの移動】

簡単に言うと、2Dも3Dも同じです。
玉の方向=(自機の位置-敵の玉の発射座標)/目的地までの距離
玉の1フレームの移動距離=玉の方向*移動速度*1フレームの時間
これをx,y両方で出せば良い。3Dならzもですね。
Unityなら、Vector2かVector3を使えば、x,z,(y)の全てを一発で計算してくれますね。
絶対座標系でも画面座標系でも、これでokなはずです。

【Unityでのネットワークゲーム】

うーん、説明するのが難しいんだよね。
NATのパンチスルーさえ考えなければ、少しの知識でUnityのNetworkViewを使えば簡単にできるけど、
NAT越えをするととたんに難しくなります。
まずはNAT越えを考えずに同一ネットワーク内での実装をおすすめします。
NetworkViewの資料はネットにいろいろ転がっているからそれを見てみて下さい。
RPC等の事も覚えないといけないし、NAT越えは僕の知っている限り、SonyのホームページかUnityオフィシャルホームページが参考になるかもしれません。
一回組んじゃえば良いんだけど、ちゃんと理解して組まないとはまります。
あと、Unityのサーバーはよく使えなくなります。
無理してNetworkViewを使うより、photon使っちゃうのも手だけど、お金かけたくないですよね?
時間があったらサンプル書きます。
プロユースで考えると、photonは決して高くは無いんですけどね。

【テクニック あたり判定】

普通はTAGを付けて、以下のように書くのが普通ですが、うまくいかないときもあります
void OnCollisionEnter(Collision c){
  if (c.collider.tag == "MISSILE") {
    Destroy (c.gameObject);
  }
}

そういうときには、ヒエラルキーから探しましょう。
void OnCollisionEnter(Collision c){
  if (GameObject.Find ("Missile")) {
    Destroy (c.gameObject);
  }
}

【ゲーム(UnityProC#でゲームを作った】

なんか気分が変わって、20時間で作ってみた。音楽を聴かせたいから作ったゲーム
とりあえず、アクションパズル

【プログラムトピック(UnityC#無償版)】

まずはUnityの無償版をインストールして下さい。
テトリスもどきを10日間で作ります。

【ゲームの仕様書を作ります。2014/11/8】

まず、1チップを16*16にする。
マスは8*32。
Unityの2Dモードで使用。
コリージョン、コライダーは使用せずに8*32の2次元配列で処理する。
背景は無し。
スコアにより徐々にブロックの落下スピードが速くなる
キーは、
  1.[↓][2]で落下
  2.[←][4]で左移動
  3.[→][6]で右移動
  4.[↑][space][8]で左回転/右回転
  5.[7][z]で左回転
  5.[9][x]で右回転
  6.[enter]で4.の左回転と右回転の切り替え
nextボックスに、次に出現するブロックを表示する。
爆弾を使った場合はノースコアー。
ラインで消した場合のスコアーは、
1ライン10点、2ライン同時30点、3ライン同時90点、4ライン同時で120点。
つみあがったらゲームオーバー。

作るもの
   1.チップ(PhotoShopCS4で作成)
   2.枠(PhotoShopCS4で作成)
   3.nextの枠(PhotoShopCS4で作成)
   4.SCORE(GUI.TEXTを使用する)
   5.効果音(音辞典の効果音をSoundForgeで加工)
   6.BGM(既存の弊社版権物の曲の流用)
   7.プログラム(UnityC#無償版を使用)
   8.デバッグと微調整
   9.スタート画面(GUI.TEXTを使用する)
  10.gameover表示(GUI.TEXTを使用する)

効果音
  1.自由落下音
  2.[↓][2]の落下音
  3.左右移動音
  4.回転音
  5.blockの着地音
  6.blockの消滅音
  7.bombの爆発音

チップ
   1.1個だけのブロック(黄色)
   2.縦4個のブロック(赤色)
   3.L字型左(水色)
   4.L字型右(オレンジ色)
   5.4個の四角(青)
   6.凸字形(緑)
   7.クランク左(紫)
   8.クランク右(ピンク)
   9.bombの爆発チップ(黒)
  10.bomb(黒)これを着地させると、周囲8チップが消えます。
  11.枠(灰色)
  12.nextbox(灰色)

戻る