最新情報(固定記事)

※※※※※※※※※※※※※※※※※※※※※※
計画中!
★ルビーのスパイ作戦
カードバトルxアドベンチャー
製作の最新情報はCi-enにて!

発売中!
★えびげん、ターニャのラインディフェンス(NEW!)
★エヴァいじり
弄ってイかせよう。シミュレーションゲーム!
・キャッスルえびる登録情報ページ
・スーサイダー登録情報ページ
・スペルマスター登録情報
・パツィーノの幸せの鳥登録情報
・ミナーヴァ登録情報

・ダンジョンオブエロチックマスター発売中!(プログラム担当)
------------------------------------------------------------
★更新情報(2018/11/01)

※※※※※※※※※※※※※※※※※※※※※※
ラベル Unity の投稿を表示しています。 すべての投稿を表示
ラベル Unity の投稿を表示しています。 すべての投稿を表示

2014年1月24日金曜日

うにち

大体うにちぃ

■プログラミング関係

■Unity

・GUIを回転・反転する

特にTextureの表示とかは重要。
やり方としてはGUIUtility.Rotate**やScale**を使うのがセオリーっぽい。

以下Scaleの話。

Pivotは文字通り反転の軸となる座標。
画面の座標(Group内ならGroup内座標)を指定する。
画像の左上が0,0とかではなく、あくまで絶対座標で指定する点に注意。
画像の表示位置がX,Y,W,Hである場合、その場で反転したいならPivot座標はVector2(X+W/2,Y+H/2)になる(Y軸反転=左右反転ならPivot.yはどうでもいい)

なお、変更した後のGUIも全部影響を受けるので、GUI.matrixを待避して戻すこと。

DrawTextureも奥が深いので、やりたい事が増えたらまた見ておこう。

・乱数

.NETなどの素のC#はRandom rnd = new Random();してNext**使うのだが、UnityはRandom.valuかRandom.Range(x,y)が定石っぽい。

上のURL先に書いてあるとおり:
intの場合はx<=値
になる点に注意。

・GUIMaker

セーブロードがクリップボードのみというトンデモだけど、$5にしてはそこそこ使える。定番中の定番NGUIは$75なので、しばらくはいいや。

問題点としては「改行を含むテキストを指定できない」という問題がある>GUIMaker
正確には「改行を含むラベルを含むGUIコードは、保存できるが読みこみ出来ない。」

どっちみち保存後手動でいじるので、GUIMakerで弄ってる間は適当な文字列で使うとか対応が必要っぽい。

■雑記

カス子MODで怒り眉を作った。
いた学の9番目のVoice+怒り表情がとても良かったので、その再現といったところ。
そしてまたネタは切れた。


これがSkyrim+SexLabFramework+SexLabDefeatの世界…!
本当はプレイヤーをおっさんにしてあれそれしたいんだけど、カワイイNPCが居ないんよね…。
フォロワーもいいんだけど、雑魚も可愛いのが良いなぁ。
NPC美化探してみよう。(敵NPCのは入れてるけど、髪が明るい紫になる問題が。)

ひろぴん

我々はこのモンスターを知っている!

蜂
実はドットで作ろうとしてたんだけど、量が多すぎて挫折してたのをリファインする形。
スライム、ローパー、蜂、人型と揃ったので、後は筋肉モリモリ、マッチョマンの変態を入れたら一通りおしまいかな(そして始まるモーション地獄)


2014年1月18日土曜日

ほぼ(風邪)引きかけました

ゆっくり一日寝たらなんとか復帰。

■プログラミングメモ

■Unity

色々ノウハウが貯まってきた(キリッ)。
と言うこともなく、とりあえず見知ったものだけ掲載。

・[Unity]Input.GetAxisを使った場合でもキーボード移動をキビキビ動かしたい

From.テラシュールウェアさん
うちはJumpキーの設定持って行ったので、Gravity=1000,Dead=0.001,Sensitivity=1000という極端なものになった。
これなんでデフォルトが慣性なのかというと、3Dゲーだとそっちのが自然だからってやつね。

あとアナログスティックも数値的な量を取得できるので、2Dでも要らんって事はない。見下ろし型とか。

関係無いけど、ジョイスティックだとアナログ以外の十字キーも数値的な量を持っている。
DirectXゲーム作成時は閾値(64)とか設定しないと、チャタリング(または押しっぱなし)するという問題が存在する。

・テキストファイルIO

セーブファイルをテキストでいいので用意したかったので調べた。
結論としては、Assetフォルダ外にファイルを設置する場合は、C#の普通のIO使った方式を調べた方が良い。

なぜかUnity関連のページはFileInfo.AppendText()使った用法くらいしか載ってないので、新規作成ではなく追記される。(そういう関数なんだから当たり前だが。)

C#本来の方法を使うと逆にGameObjectにコンポーネントとして登録できない問題がある。(MonoBehaviorを継承しないといけない)

ただ、MonoBehaviorを継承するとnewでの宣言が何故か出来なかった(方法が有るのかも知れないが、良くわからんかった)
MonoBehavior継承したクラスにC#本来のクラスを持たせれば動くので、二度手間だがとりあえず動いた。
(動けばよかろうなのだ-!)

Assetにあるテキストを読むだけならこっちの方法の方が良い。
MonoBehaviorでnew出来なかったのが良くわからんが、それが解決したらMonoBehavior使った方法に戻したいところ。

・非ActiveなGameObjectの参照

ようわからんが、シングルトン(アプリで唯一のインスタンス)ならGameObjectの参照をクラスに持たせて、Inspector上でD&D登録した方が早いってのは確実。

というか、探す方法が色々あるのは構わないけど、「何でも出来る」は「(ノウハウが無ければ)なんにもできない」なので、ある程度逆引きできると良いと思う。

Unity逆引き辞典とか良さそうじゃない?

αブレンドをスクリプトで変える方法とか、Prefabのインスタンス化とか色々

・セーブファイルの構造

いちいち.INIファイル形式とか自作フォーマットなんてやってらんないので、Json変換を流用するのが楽そう。
どうせ分かる人にはセーブ弄って貰うつもりなので、暗号化はやんない。
変換やObjectへの復帰もDLLがやってくれるので、Jsonとか知らなくても使える。

ただ、const stringが混ざってる状態で上手く変換出来なかったりするので、メンバ変数の型には注意。
 

・列挙子について

C++でもイマイチ上手く使いづらいEnumだが、C#やUnityだったらもう数値としての情報は切り捨てちゃっても構わんと思う。
単体で
public enum ***Type {
}
でもいいし、クラス内限定なら
public class Hoge {
  enum **Type {
    HOGER
  }
  **Type type;
  void Awake() {
    type = **Type.HOGER;
  }
}
とかでも良い。もちろん数値としての情報で管理も可能。

■Visual Studio

先週辺りからフリーズが連発していたが、原因はVisualStudioのデバッグモードと、ブックリーダー系の相性である可能性が高い。

MSのフォーラムでは結局「環境依存」で一蹴されていたが、…ってこれ前にも書いたな。
最近幾つか関連する原因があったので、アンインストールなど色々したら起きなくなった:

1.電子書籍リーダー系アプリ全般(system32\drivers\cymon.sysとかが怪しいらしい)
2.コンテキストメニューが多い

正直2番目はあんまり関係無さそうだし、大してコンテキストメニュー弄ってないのに直った。
やっぱり1番目の電子書籍系だなぁ。

■雑記

変身ヒロインとかSkyrimとか

赤城乳業:ドルチェTime・ティラミス
美味かった(小並感ステマ)ステマってスポンサー料貰って無くてもステマ扱いされるのが厄介
なんかサクサクしてて意外にティラミスしてた。
今日また買ってきた。


ちーん

意味不明なエラーが大量に…

スライム(パーツ化不可…!

ワーム的なアレ

もっちゅもっちゅ
モーションとか面倒なんですがこれは…
とりあえず要員は大分揃ってきたって感じかなぁ。
ワームは動かすの面倒なのでGomon専用。
 ニコ動でSkyrimの最大トーナメントが面白かった。
オブリとFallout3見たらまたやりたくなったが、オブリはやっぱり昔のゲームだと痛感してそっと閉じた(フリーズしたのでどっちにしろ落とすしかなかった)


2014年1月12日日曜日

Unity関連

まとまった情報があったので記載

■プログラミングメモ

■Unity

・ActionEvent

モーションの途中や最初、最後に追加すると、スクリプトの関数を呼び出すことができる。
例

こいつを使えば、「Nフレーム目にショットを出す」といったことがAnimationウィンドウだけで設定出来る。
ちなみに、ショットなど生成して消したりはPrefab化したものをInstantiateでインスタンス化するのが定石っぽい。
詳細はUnity2Dのチュートリアルプロジェクト(特にGun.cs)参照。
Rocket.csには自身を2秒で消す処理もあるので参考になる。(1秒未満にしたい場合はアニメーションとかUpdate()内でTime.deltaTimeとか使って手動でDestroy(gameObject)すればOK。)

3Dだがチュートリアルプロジェクトの「Stealth」も参考になるので見るべき。


なおActionEventに登録できる関数には、条件として「引数が0個、またはint,float.doubleいずれか1個のみ」がある。引数を2個以上設定したり、他の変数タイプを指定すると一覧に出てこない。
(エラーも出ないので、出ないときは引数などをチェック)

なお、2つめ以降のスクリプトの関数を指定していると(Function not supported)と出ることがあるが、一応呼ばれては居る模様。よく分からん。
関連スレッド


・GameObjectの表示の切り替え

服装の変更に表示切り替えを使っている。

ゲームオブジェクトの表示切り替えには、「RendererON/OFF」と、「Active/非Active切り替え」の二つの方法がある。

で、Recursiveに全部切り替えるのも良いが、一個一個切り替えたい場合もある。
その時はgameObject.SetActive()でOK。

で、現在有効(Active)かを知る方法は二つあり、activeSelfはそいつ自身のActive状態(true/false)がわかり、gameObject.activeInHiererchyは親が非Activeの場合は問答無用で非Active(false)になるといった調べ方ができる。
ヒエラルキーは何が嬉しいかというと、見えないgameObjectを弄る必要がなくなるという点。

Unity上では親が非Activeになると、子も全て非Active扱いであり表示されなくなる。
しかし、activeSelfだけだと親関係無くActive状態が取れてしまう。

ヒエラルキーを使う事で、親が非Activeな場合は子も全部非Activeとなり、そっとしておくことが出来る。

ちなみに、現在作っているゲームは服装/アーマー/下着と、それぞれの破損時/通常時の計6パターンある。
そのため、それぞれをタグ付けして、GameObject.FindObjectsWithTag()を使って一気に服装を取得する方法を取っている。

服装は頻繁に変えないので、処理的には問題無さそう。(大量の服Spriteを全部仕分けておく必要があるが。)


・疑似3D(ベルトアクションとか見下ろし用)

仮想地面を作ってみたが、他のキャラが普通に横方向でつっかえるので使えないことが判明。

とりあえず数値で仮想地面を超えないように設定。
とはいえ、今のところあまり上手く動いてない。なんとかならないか試し中。





2012年10月7日日曜日

RDB→FBX→Unity

■えび2
バグつぶし中…
火:大分整ってきた感じ。
水:ラスボスのレイニーがバギー
岩:レールに沿って動く奴がことごとく自由落下します。
機械:ボスのコアシステムの作りづらさYABEEEE
ラストタワー:ほとんど、まだ何出すかさえ決まってない

■ゆにげん
おちゃっこLABさんのRokDeBone2_FBX_Exporter_Kitを使って、FBXを出力。Unityに読み込ませてます。
しかし、何故かモーションが一部崩れる問題発生。
RDB/PiyoAnime上でのアニメーション/ポーズ。見えてないからKENZENだね!

Unity。メッシュがすこぶる暗いのも気になりますが、モーションが色々変。
分かりづらいですが、上の図だと下記がおかしい。
  1. えびげんの地面側の足が、ゾンビから向かって右にずれ込んでる
  2. ゾンビの腕が下に下がってる(というか、基本ポーズになってる?
  3. えびげんの上げた足もゾンビ側から見て右にずれ込んでる

PiyoAnimeだと正常に動くのですが、掲示板を読んだところ、どうやら読み込み時のサンプリングレートが原因くさい。
UnityのアニメーションSamplingRate弄っても直らないので、とりあえずUnityのサポートに英語でバグレポート出したよ。
仕事以外で修正要望を書くハメになるとは…。


2012年6月10日日曜日

PressureArt

■PressureArt
アクションパズルゲーム「PressureArt」が出来ました。
上から板が降ってくるので避けていきます。

・スタンドアロン版(Win)
http://ux.getuploader.com/evigen/download/82/PressureArt.zip

・Web版
http://www.geocities.jp/evigen_1/Pressure/WebPlayer.html


2012年6月3日日曜日

Unity - リスタート他

Unityで知った事など。大抵ググったものなので、分かり次第元URL追記予定。

■リスタート
リセットしたいときなどに。
ステージ毎にSceneを作っているならこれで良いと思う

Application.LoadLevel( Application.loadedLevel );

Ref
ttp://d.hatena.ne.jp/specter1330/20111022/1319298256

■ロード順
Build Settingsでシーン一覧が出るが、順番を入れ替えられる。
一番上のシーンが最初に実行される。

■アニメーション関連
・ ループにする
animation[aniAnimation.name].wrapMode = WrapMode.Loop;
デフォルトでは1回しかアニメーションしない。
とりあえず設置してアニメーションだけさせたいときなどに。

・再生。別のアニメーションに切り替えるときはフェードを使った方がよい。
animation.Play(aniAnimation.name);
aniAnimationはAnimationClip

■追従
敵が襲ってきたり、味方が付いてきたり。
壁を突破してくるので、改良が必要。

var direction : Vector3 = leader.position - follower.position;
direction.y = 0;

follower.rotation = Quaternion.Slerp(
  follower.rotation,
  Quaternion.LookRotation(direction), rotationSpeed * Time.deltaTime );



//follower.LookAt(leader, vUp);
//follower.Translate( speed * Vector3.forward * Time.deltaTime);
var moveVector : Vector3 = direction.normalized * speed * Time.deltaTime;

follower.position += moveVector;
コメントを外すと、俯角有り(ホーミングミサイルなど用)