Pages

2013年8月2日金曜日

最近絵を少しずつ勉強しているのですが

なかなか一つの絵を完成させることができません。

なのでとりあえずたくさん書くことにしました。

一応人体の書き方の教本は買ったので

それでデッサン力を磨こうと思います。

3DCGクリエイターにはデッサン力が必要不可欠なので。


今はまだ一つの絵を描くことすらできないので

目をいくつか書いてみました。




















シュタゲの助手です。


















こっちはなぜか画像が横になってしまってますが、

WORKING!!の山田と

シュタゲの阿万音鈴羽です。

目のバランスが悪いと残念なことになるんだなぁと

実感しました。




最近UV操作を少しやっているのですが

Blender、Metaseqoiaと使ってきて

ようやくわかってきた気がします。

もっと頑張らなければ。


最近TVでよく流れているこのCM。





















これすごくいいと思います。

これをみるととてもやる気が出ます。

こういうのを夏休み明けまでには作れるようにしたい・・・

というかする。


それぐらいの熱意で頑張る。




余談ですが、最近どうも横になると寝てしまうので

ベットを片付けました。

僕の部屋のベットは折り畳みしきなので。

2013年8月1日木曜日

日本ゲーム大賞

ゼルクだ。

我々SC(SecondContact)は来年の日本ゲーム大賞に応募してみようかと思う。

2人で難しくないか?と思うが1人でも受賞している事例はある。


昨日はそのための企画を少し考えていた。

やはり思うに日本ゲーム大賞ではRPGやシュミレーションゲームは向いていないと思われる。


パズルやアクションゲームが多いといった印象。


そして独自のゲームシステムを入れること。
そんなに細かいシステムはいらないと思う。何時間もプレイするとは思わないし。



そして少し考えてみたんだけど
なにか新しい組み合わせがあれば面白いんじゃないか?と思った。

例えば
女子と虫を組み合わせてアクションゲームを作ったり。
蟻と海賊を組み合わせたゲームを考えたり

一見バカみたいかもしれないけど案外こういった方法でスゴイものが生まれる可能性は十分あると思う。


だいたいのゲーム内容は見えてくるんだけどどうも面白いか?と言われるとうなずけない。


やはり企画は難しい。

どうせ応募するんだったら受賞を目指して頑張りたいし、受賞すればもちろん就職にも有利になると思う。


とりあえず今作ってる2本のゲームとは別にもう一つ長い期間を掛けて少しづつ作っていけたらと思う。

ってかバイオを無しにしてコレを主体にしてもいいか。

Unityの方ははやく完成させたいね。サウンドもまだ手を付けてないし。ライティングもまだだなー。




とりあえずPCを触れない時間は企画を練ってみようと思います。



アリーヴェデルチ。

2013年7月30日火曜日

Shopを作った

ゼルクだ


日曜にShopを完成させた。(リソースは無いが)

大事なところを抜き出すとこんな感じ
void OnTriggerStay(Collider c){
if(c.gameObject.tag == "Player"){
if(player == null){
return;
}
if(player.isGrounded()){
if(Input.GetButtonDown("マルボタン")){
if(wordsCount >= 2){
flagCount = 0;
}else{
flagCount = Mathf.Min(flagCount + 1,3);
}
}
if(Input.GetButtonDown("バツボタン")){
flagCount = Mathf.Max(flagCount - 1,0);
}
}
}
}
void OnTriggerExit(Collider c){
if(c.gameObject.tag == "Player"){
flagCount = 0;
}
}
// Update is called once per frame
void Update () {
Method(flagCount);
}
void OnGUI(){
if(openShop){
}
}
private void Method(int n){
switch(n){
case 0:
if(player != null)
StartCoroutine("PlayerControll",true);
DeleteText();
wordsCount = 0;
buyItem = false;
break;
case 1:
Instance();
player.isControllable = false;
break;
case 2:
DeleteText();
openShop = true;
cursorMove();
break;
case 3:
AddItem ();
flagCount -= 1;
break;
}
}

ショップ店員さんと会話中、○を押すと進んでいき、✕で戻る感じ、

問題なのは最後の「ありがとうございました~」と言われたときに○を押すとおかしな挙動になるので苦肉の策としてif文をぶち込んである。

なんかもっといい方法は無いのかなー。


そして罠も作ってみたよ。

当たり判定がまだうまく行ってないです。




アリーヴェデルチ。

2013年7月29日月曜日

申し訳ございません

完全に更新をサボってました・・・

確かにこのままでは活動日誌の意味が

ありませんね。

これからは

書かない=サボった

としましょう。


もうすぐ夏休み


夏休みに入る前のラストスパートをかけよう。


基礎を学ぶことは本当に面倒だけど

ここを超えればきっと楽しくなる。

その日が早く来るように

努力しようと思います。



絵に関しても

参考書をやるだけじゃなくて

好きなキャラを書いてみることで

続けていこうと思っています。

ちょくちょく絵も載せていきますね。


忙しい期間もおそらく今日で終わりなので

生きてきた中で1番本気を出していくくらいの気持ちで

頑張っていきます。

2013年7月27日土曜日

久しぶりの投稿

ゼルク・ハーデスだ



活動日記という名のこのブログ



全く機能していない



全く活動を残せていない



ちゃんと更新したほうが…



と思ったので頑張って書いていく。



書けない と言うことは何もしていない と同じ事だ と自分に言い聞かせるつもりで書いていこうと思う。




先々週あたりで予定表を作った。

だがはっきり言って遅れている。
言い訳をするつもりはない。何日かサボった日があるから遅れている。


といってもまだ取り返せる範囲なのでこのまま進めていこうと思う。



まだ此方もやることは多々あるので頑張っていこうと思う。


本当は昨日ショップを完成させるつもりだったのだがちょっとやることがあってできなかった。
そのため今日ショップを作っていたのだがなかなかうまくいかない。

前回の記事でGUItextを生成する方法で文字を出していこうと思ってたら無限に生成される事態に陥ってしまったり(修正したが)
なかなかいい方法が思いつかなかったり

とりあえず今日は幻影を駆ける太陽を見て頑張ろうと思います。


OPいい曲だな。


アリーヴェデルチ。

2013年7月10日水曜日

Unityで文字列を表示したい2

ゼルク・ハーデスだ。

先日の記事ではGUI.Labelを使った表示をしていたのだが使い勝手が悪いと思い変更してみた。

変更点
看板の前で○を押したらGUI Textのインスタンスを生成する。
もう一度○ または離れると生成したインスタンスを消す。


まずは看板のオブジェクトにコリジョントリガーをアタッチ
スクリプトを作成してアタッチする

public class Kanban : MonoBehaviour {
public GameObject text;
public string words = "";

private bool isEnter = false;
private KanbanText word;
private GameObject temp;
public void OnTriggerStay(Collider c){
if(c.gameObject.tag == "Player"){
if(Input.GetButtonDown("Action")){
isEnter = !isEnter;
Instance();
}
}
}
public void OnTriggerExit(Collider c){
if(c.gameObject.tag == "Player"){
isEnter = false;
Instance();
}
}
private void Instance(){
if(isEnter){
temp = Instantiate(text) as GameObject;
word = (KanbanText)temp.GetComponent(typeof(KanbanText));
word.text = words;
}else{
if(temp != null)
Destroy(temp);
}
}
}

変数名がわかりづらいですね。
text変数はGUI TextのプレハブをInspectorから指定する。
string wordsは表示する文字列だ。これもInspectorから編集できるようにする。そうすることでたくさん看板を作ってもここをいじるだけでOKだ。
フラグはテキストを出すかどうか。
wordはGUI Textプレハブにアタッチされてるスクリプトをひっぱってくる。
tempは生成したオブジェクトを入れておく変数。

OnTriggerStayでPlayerが入ってきて○ボタンを押したらフラグを切り替える。
Exitは見たまんまだ。
Instance変数でtrueならインスタンス生成+wordsを設定
falseなら削除。もし何かしらの間違いでtempがnullだったら抜けるようにしておく。


GUI Textのほうのスクリプトは以下
public class KanbanText : MonoBehaviour {
public string text = "test";
// Use this for initialization
void Start () {
}
void Update(){
guiText.text = text;
}
}
(スクリプト名は勘弁してくれ・・・)

コレで完璧!!
コレをベースにキャラクターの会話もできるかな。

もっといい方法があったら教えて欲しい・・・



アリーヴェデルチ。

2013年7月9日火曜日

Unityで文字列を表示したい

ゼルク・ハーデスだ。


看板など○ボタンを押したら文字が表示できるようにしたい。


そこで考えた
GUI.Labelをつかうかguitextを使うか。

textの方はどうやらフラグで表示、非表示ができないみたい。(多分)

Labelの方はできる。しかし真ん中に合わせて文字表示ができない(伝わるかな・・・)
サイズの変更もいまいちよくわからない。


GUIはなんだか苦手だなー。


まぁ看板のタスクが明日までなのでなんとかする。



いま書いてて思ったんだけど、
看板の前で○ボタンを押した時にtextのスクリプトをアタッチしているオブジェクトを生成すればいいんじゃないか?と思った。(敵がアイテムを落とすのと同じ原理)


これは使えそうだ。


それでは早速やってみようと思う。



最近モネの活動報告が無いので不安だが頑張ってもらわねば俺1人で完成するゲームじゃないしな…


まぁちゃんと予定表も書いてたし大丈夫だとは思うが。


アリーヴェデルチ。

2013年7月7日日曜日

MonoDevelopが起動しない時の改善方法

ゼルク・ハーデスだ。


今日から予定表通りの仕事になるので
Unityを開いてスクリプトを編集しようとUnityからMonoDevelopを開こうとした。

そしたら砂時計が一瞬出るもののMonoDevelopが起動しない。

どうしたのかと思いMonoDevelopを直接起動。


すると
System.EntryPointNotFoundException: Unable to find an entry point named 'gtksharp_list_get_data' in DLL 'glibsharpglue-2'.
こんな感じのエラーが出る。(忘れたが私の時はちょっと違ったかな)

「MonoDevelop 起動しない」
で調べてもいい改善方法が得られなかった。

unity4.15にしろ。とか出てきたがすでに4.15だったしインストールもやり直した。が、無理だった。

検索ワードをちょいちょい変えるとあるサイトに行き着いた。


テラシュールウェア
(ディープリンクすいません)

アプリ開発のチームなのかな?

このページに書かれた通りにすればMonoDevelopが起動できるようになった。ありがとうございます。


稀に発生する現象らしいけどどうしてこんなにも私は運が無いんだろうか。


まぁとりあえずは作業できるようになったのでやっていこうと思う。


それでは熱中症には気をつけて


アリーヴェデルチ。

2013年7月6日土曜日

暑い

ゼルク・ハーデスだ。


木曜日にモネと少し通話をして、今日の夜までに予定表を作ろう。ということになった。

必要な物を洗いざらいにしてみたけど


これ、間に合わなくね?



となった。


必要な物が意外と多い。
3Dモデルが最低4個ぐらい、UIも必要だしモーションも必要。
サウンドも必要だ。


リソース面はモネに頑張ってもらうしか無いのだが・・・
サウンドは拾ってくれば私でもなんとかなりそうだけど。



とりあえずUnityのほうの予定表は完成した。

あと、バイオみたいなものも平行して作っていくという形になった。


ぶっちゃけバイオみたいなもののほうがショップとか作る気は今のところ無いので簡単そうだ。(ライティングとかエフェクトとかアニメーションの補間とか調べなきゃならんけど。そう考えると簡単でもなさそうだ)


まぁ夏休みもあるし時間はまだある。



ただ何度も言ってるけどCEDECまでにはなんとか見せれるようなものを作りたいね。



さて、今日はvitaのサンプルを作って、明日は早速予定表通りに動いてみようと思います。




アリーヴェデルチ。

2013年6月29日土曜日

打ち合わせ

ゼルク・ハーデスだ

昨夜、モネとこれからの予定を立てた。

とりあえずモネはモデルを7月末までに作る。
私は罠・看板・お金・ショップ・カメラがめり込まないように これらの実装をしていこうと思う。
とりあえず8月までにはVer1.00と呼べるものを作りたい。

討鬼伝を買ったのでちょっとゲームをしすぎてしまった。

今日はこれから製作のほうやっていこうと思う。


そしてPSMの入門書が届いた。

こちらのほうも少しづつやっていこうと思う。

そして、8月にゲーム業界人の勉強会がある

CEDECと言われるものだ。
かなり大規模である。

またDevelopers' Nightという懇親会がある。そこで業界の人とおしゃべりする機会が与えられる。
昨日モネに話したら行きたいと言っていたので2人で行ってくるかもしれない。

フロム・ソフトウェアの人は来るかわからないけど、その懇親会で業界の人に作ったゲームをお見せ出来ればいいと思っている。そのためCEDECまでにすごいゲームを作りたいね。

そして、無理かもしれないけど名刺交換できれば儲けものだ。

さあ本気だそう。
途中で投げ出すことだけは絶対したくない。そんなの学校を中退した奴らと同レベだ。

自身をつけるためにもゲームを完成させよう。

アリーヴェデルチ。

2013年6月28日金曜日

2日目、3日目

こんにちわ。

モネです。

昨日はあまりの眠さに寝てしまったので

昨日のものとまとめて書きます。



・2日目


自分の愛用している

ペンケースを書きました。

































物をしっかりデッサンできる人になりたい。

影とか立体感ってどうやってつけるんだろう。


・3日目

たまたま部屋に飾ってある

うーぱが目にとまったのでデッサンしてみました。



 今日からコメントをコメントを残すことにしました。

ここにも書いてある通り、

メタルっぽさというか光沢を出したかったのですが

やりかたわかりません。調べます。

影をつけるのに挑戦してみたけど

何か違う。

いろいろ難しい。

でも頑張る。





・Maya

できることが多すぎて

覚えるのが大変です。

頑張る。


最近始まったMayaの講習会で

「積み木のお城をつくってみましょう。」

といわれ作りました。













ここまで来て、

何か違う!!

と思ってやり直しました。

今見ても何か違いますね・・・













最終的にはこんなロボットの神殿を作りました。


・・・



こんなんじゃなくてもっとすごい!

と思えるようなものを作りたいですね・・・


講習会だけじゃなく

家でもちゃんと勉強しなければ。

とにかくやるっきゃない!

2013年6月26日水曜日

謝罪

モネです。

謝らせてください。

先週、毎日

絵とか上げますと言いながら

一回も上げてなくてすいませんでした。


言い訳するなら、

先週はバイトも学校も忙しかった・・・


今週でバイトを

制作に集中するために辞めます。

なので、今度こそ・・・

先週ゆってたやつをやります!!


今度は絶対です。


これでやらなかったら殴ってください。




一応先週から少しだけデッサンしてみたのですが、

質感とかどうやって出すのかわかりません・・・






















初めて頑張って模写しましたが、

難しい。

飲み口のところが意味不明でした。

精進します・・・


今日は何を書いてみようかな。



Mayaのことも次回は書きます。



とりあえず今週もやらなかったら

殴ってください。

2013年6月25日火曜日

回避の処理

ゼルク・ハーデスだ。

今回は回避の処理を考えてみた。

最初は速く回避をし始めてゆっくり目的地に着くという処理が理想なんだが

うまくいかない。

Unityの線形補間の使い方がいまいちよくわからないのだ。

Signを使った線形補間にしたいのだがやり方がわからないのである。


とりあえず今は
ジャンプのボタンを押された
 戦闘態勢か?
  YES 回避
  NO  ジャンプ

といった感じである。

ジャンプはYにジャンプ力分を足してやればいいのだが
回避は向いている方向にジャンプ力を足して、かつY軸にいくつか足してやればいい感じになるとおもう

けど

やっぱ線形補間を使いたいよね。

カクカクの動きは素人臭さがありすぎて好きじゃない。


Unityの関数にないのかなーサイン波を使う線形補間。




あとこれからもう一つの方を少しいじって寝ようと思う。



アリーヴェデルチ。

2013年6月23日日曜日

何も進まん

ゼルク・ハーデスだ。

悔しいことに何も進まない。

何をしたらいいのか考えて入るのだがこれといったものが思い浮かばない。


そしてだ、

プレイステーションモバイル(vitaとか)の開発ができるらしい。今なら登録も無料だ。
その入門書が26日に発売されるということでコチラも少し触ってみようと思い密林で注文した。

なにか今作っているものの役に立てばいいと思う。


さて、どうしたものか。



あとゲーム業界のための勉強会とやらが夏休みに開催される。

そこにはたくさんのゲームクリエイターたちが集うのである。


出来れば参加したいのだが悲しいことに友達がいない。
「友達と参加するようなものじゃない!」という声が聞こえてくるかもしれない。

しかし、私の性格上これはどうしようもないことなのだ。

1人で知らない場所、知らない人達の中に飛び込んでいくのはとても勇気がいる。
その勇気が私には無いだけである。



誰か一緒に行く人居ないかな・・・(チラッ


まぁ参加するのにお金がかかるけどね…

ただフロム・ソフトウェアの方がいたら大チャンスになるだろう。

参加し、成功に納めれば価値はものすごくでかいものになるだろう。

悩みどころだ。


すこし話がゲーム制作とずれたがこれで失礼する…


アリーヴェデルチ。

2013年6月21日金曜日

さて、何をしよう

ゼルク・ハーデスだ。


ブログが変わっててびっくりした。



さて、連休に入る。

食料もあるので深夜まで作業が可能だ。


しかし、何をすればいいのかわからなくなっている。

とりあえず敵AIを考えるが、それから何をすればいいのだろうか。


ライティングの設定か?
サウンドか?

まぁそれは仕上げだろう。


リファクタリングでもちょくちょくしようかな。



やっぱゲームづくりは設計からしたほうがいい。


次回からはそうしようと思う。


アリーヴェデルチ。

2013年6月20日木曜日

お久しぶりです

モネです。

最近ざぼり気味です・・・

頑張ろう・・・


Metaseqoiaでキャラクターをモデリングしていましたが

どうやらうまくいかなかったみたいなので

Mayaを勉強中です。

それからオリジナリティがある

ゲームを作りたいので、

絵をかく練習なんかも始めました。


今はゼルクさんと個人のスキルをみがく時間みたいになってます。

正直、足を引っ張りたくないので、頑張ります。


しかしただ、頑張ります。と言っても

口だけの可能性が・・・


この悪い流れを断ち切るために

2つのことを(とりあえず)一週間ブログに書いていきます!

途中経過も毎日上げていきます。




その1!!


一週間でMayaを使い、

何か作ります!

多分人は難しいので

銃とか作ってみようかな。

丁度教本にも出てたし。







その2!!


書いた絵をうpします!!

正直うまくなってからしたいけど

それだと続かなさそうなので

毎日何か一つ書いてあげていきます。

一週間でどれくらいのレベルアップができるかな・・・




丁度一週間後、

僕はドラクエなら

1レべから20レべぐらいになる

気持ちで頑張ります。


1から20レべってすごいの?

2013年6月18日火曜日

攻撃の当たり判定 その2

ゼルク・ハーデスだ。

前回の記事ではrigidBody同士の当たり判定を考えていたのだが
実際には剣は敵を通り抜ける。

なのでコライダー同士のOnTriggerEnter判定にすることにした。


しかし、このままでは探索範囲用のトリガーと反応してしまう。
そのため、空のオブジェクトを敵の階層の子供に持たせSphereCollisionをつける。SeachAreaというスクリプトを作って、親のコンポーネントを取得。
親のコンポーネントを取得するには
private 敵のスクリプト名 enemy;
start(){
  enemy = (敵のスクリプト名)transform.parent.GetComponent(typeof(敵のスクリプト名));
}
OnTriggerEnterでプレイヤーが入ったら親のオブジェクトにアタッチされているスクリプトのフラグをオンにしてやればいける。

そして作ったオブジェクトのレイヤーを設定し、探索範囲用のトリガーとぶつからないように編集する。
作ったオブジェクトのInspecterの右上、レイヤーからAddしてやる。
武器にもレイヤーを追加しておこう。
UnityメニューのEdit->ProjectSetting->Physics
これで当たるか当たらないかの編集が可能になる。
先ほど追加した、武器と探索範囲用コリジョンのチェックを外してやれば当たり判定を行わなくなる。

コレで完璧だ。

当たり判定はうまくいくのだが、これだと攻撃モーションじゃなくても武器にあたってしまったらHPが減ってしまう。

またもやFlagの出番か。


そのあとは攻撃があたったら怯みさせなきゃならん。

その処理をつければいいか。


まだモデルとモーションができてないのでこれらは最後の方に実装になるか。

次にやるべきことは敵AIをもっと凝るか。


そして、敵が死んだらRagdollにするようにしよう。

Ragdollについてはこれから勉強していく。




わかりにくい説明かもしれないが、レイヤーは使う頻度が多くなりそうなので覚えておきます。

アリーヴェデルチ。

2013年6月17日月曜日

攻撃の当たり判定

ゼルク・ハーデスだ。

いま、攻撃の処理を書いている。

プレイヤーに棒を持たせてそれが敵と接触したら敵にダメージを与える処理だ。


勘でJointやらリジッドボディをつけてみたがよくわからない・・・
リジッドボディをなぜつけたかというと、敵を倒した後、敵の死体(ラグボディっていうのかな)と当たり判定を付けたいので物理演算が欲しかったから。

まぁなんとなくやってみたけどうまくいかない。


そもそも情報が少なすぎる。

本だと、攻撃範囲にいる敵の情報を持ってくると言う形なんだがコチラは棒だ。
やっぱり棒との当たり判定が欲しい。


ググってもなかなかいい情報が出てこないのである。


もともと敵には探索範囲として、スフィアコリジョンをつけていたのでそれと反応してしまう。


どうしたらいいのだろうか。

リジットボディ同士でしかできない当たり判定みたいなのがあるのか。

またネットという情報のジャングルを歩きまわることになるだろう。


ちょっと暑い…

だがクーラーはまだ早い。


電気代がもったいない。



さぁ、8月までには完成するのであろうか。


多分1面は大丈夫だと思うよ。



P.S.
カメラのバグがとれない・・・
最大まで下に向けてロックオンをし、ロックオンを外すとなぜか一番上にカメラが移動してしまう…



解決方法がわからないので今現在は仕様ということにしておこう。


アリーヴェデルチ。

2013年6月16日日曜日

タイトルシーン

ゼルク・ハーデスだ。

基本動作は形になってきたのでタイトルシーンを作ろうと思う。

ゲームの名前と「Press スタート ボタン」と表示させ、ボタンが押されたらニューゲームとゲーム終了の2つを表示させる

OnGUI関数で
まずはGUI.Labelでゲームの名前を表示。

フラグを作って偽だったらプレススタートボタンと表示させる。

Updateでスタートボタンが押されたらフラグを変える処理を作り、押されたらプレススタートボタンを消してニューゲームなどの選択画面にする。

そしてintの変数をつくり1ならニューゲーム2なら終了のところにカーソルを持ってくるようにする。

そのときにGUI.LabelのRectのなか2番めの要素をラープで変えればいいと思う。
if(Input.GetButtonDown("SelectDown")){
count += 1;
if(count > 3)count = 1;
}
if(Input.GetButtonDown("SelectUp")){
count -= 1;
if(count < 1)count = 3;
}
switch(count){
case 1:
cursor_y = Mathf.Lerp(cursor_y,497,0.2f);
break;
case 2:
cursor_y = Mathf.Lerp(cursor_y,543,0.2f);
break;
case 3:
cursor_y = Mathf.Lerp(cursor_y,590,0.2f);
break;
}

下ボタンを押されたらカウントを増やしてスウィッチ文でy座標を増やしてあげる。

ラベルは
GUI.Label(new Rect(300,cursor_y,cursor.width,cursor.height),cursor);


コレで完成
意外と簡単にできたのでよかった。


次はモデルを拝借してうでを動かすだけの仮アニメーションを作って、アニメーションの設定をしていこうかなと思う。



ちょっとずつだけど形になってきたなー。


アリーヴェデルチ。

2013年6月13日木曜日

ロックオン処理・修正

ゼルク・ハーデスだ。


前回の記事、ロックオンの処理の最後
切り替えが2体までしか切り替えれなかったので改良してみた。

void SetTarget(){
LinkedListNode<GameObject> node = targetList.First;
if(node == null) target = null;
else{
if(isLockOn){
if(Input.GetButton("切り替えボタン") == 1.0f){
if(timer > waitTime){
if(targetList.Find(target).Next != null){target = targetList.Find(target).Next.Value;print (target.name);}
else target = targetList.First.Value;
timer = 0.0f;
}
}
}else target = targetList.First.Value;
}
timer += Time.deltaTime;
}

まあ1行目から説明しよう。
まずはLinkedListの最初の要素をnodeにぶち込む。
もし、nodeがnull(最初の配列に何もはいってない)だったらtargetにはnullを入れておく。
else文、もしnodeの中にはいってて、かつロックオン中だったら
ボタンが押される→LinkedListの中のtargetを探す。その次の要素がnullじゃなかったらtargetを次に移す(わかりやすいようプリントしてある)
もし、次の要素がnullだったら最初の要素をtargetにいれる。
時間をリセットする。
ロックオン中でなければ最初の要素をtargetに入れる。
タイマー更新

こんなかんじか。

説明は難しいな。

まぁこれで順番にターゲットを切り替えることができたので現在どのターゲットをロックオンしているか、などのUIも作って行かなければならない。

そしてタイトルだな。

アメトーークが始まるまでがんばろう。


眠たくなってきたぞ・・・




アリーヴェデルチ。

2013年6月11日火曜日

ローポリちゃん1号完成

モネです。

とりあえず一つローポリモデルが

やっと完成しました。

とっても骨が折れる作業ばかりでしたが

できた達成感があるのでまだまだ作りたいですね。




















最初はこんな感じに気持ち悪いのができてしまいましたがでしたが、

あまりにも顔がゆがみまくりだったので

頑張って修正しました。





















まだまだですが

前に比べればいい感じになったんじゃないかな。

ただ、袖の部分でわかるように裏面が透けてしまうのは

どうすれば治せるのだろうか。

もっと研究していかなければ。

時間はいくらあっても足りない。

2013年6月10日月曜日

ロックオンの処理

やぁ、諸k(ry


ゼルク・ハーデスだ。


この連休中、プレイヤーが敵をロックオンをする

といった処理を考えて実装してみた。

が、これがかなりの鬼門であった。

まずは1体だけロックオンをし、ロックオンをした場合その敵の方をずっと見て動く
という処理だ。

プレイヤーにスフィアコリジョンを持たせ、isTriggerにチェックを入れておく。
OnTriggerEnter(Collider c)関数が呼び出された時、
c.gameObject.tag == "Enemy"だったら変数targetにcをぶち込めばいい。
そしてIsLockOn()でターゲットとの距離がtargetDistance(ロックオン可能距離)よりも近くて、ボタンを押されたらロックオンを可能にする。これはフラグを使った。
フラグがONになるとロックオン専用の動きをするようにすればいい。

ターゲットとの距離がロックオン可能距離を越える。またはONの状態でボタンを押されたらフラグをOFFにすれば通常モードになる。


敵一体の場合はとても簡単に実装ができた。

しかし、次が問題である。
たいていのゲームの場合、ロックオンの切り替えが可能になる。
◎機能
・ロックオン時、指定のボタンを押したら次に近い敵にロックオンを切り替える。
・ロックオンしている敵がロックオン可能距離から離れた場合、次に近い敵にロックオンを切り替える。
・ロックオン可能距離に複数体いた場合、可能距離に入った順ではなく、一番近い敵にロックオンをする。

だいたいこの3つであろうか。

さて、複数の情報をどう管理するか・・・配列か・・・
Dictionaryを使う方法もあるかもしれないが、私はLinkedListという配列(?)を使った。
LinkedListやDictionaryをUnityで使う場合、using System.Collections.Generic;を書かないと使えない(javascriptはわかりません)
LinkedList<GameObject> targetList = new LinkedList<GameObject>();と宣言する。
OnTriggerEnterでtargetList.AddLast(c.gameobject)とする。
どこかでtarget = targetList.First.Value;
こうすればスフィアコリジョンに入ってきた順でロックオンが可能になる。
しかし、それでは2番目に入ってきた奴のほうが最初のやつより近かった場合、ロックオンが2番にできなくなる。SetListという関数で並べ替えをする。
私は
LinkedListNode<GameObject> node = targetList.First;
  while(node != null && node.Next != null){
   if(Vector3.Distance(transform.position,target.transform.position) >
    Vector3.Distance(transform.position,node.Next.Value.transform.position)){
    GameObject temp = node.Next.Value;
    targetList.Remove(node.Next.Value);
    targetList.AddBefore(node,temp);
    break;
   }
   node = node.Next;
  }
とした、現在のターゲットより、その次の奴のほうが近かった場合、targetListの中身を入れ替える処理だ。
※これだと3体以上になったときに多分うまく行かない。後々調節する予定。
※追記:以下に書き換えた事により、3体でも上手く動作した
 LinkedListNode<GameObject> node = targetList.First;
  while(node != null){
   LinkedListNode<GameObject> node2 = node.Next;
   while(node2 != null){
    if(Vector3.Distance(transform.position,node.Value.transform.position) >
     Vector3.Distance(transform.position,node2.Value.transform.position)){
     GameObject temp = node2.Value;
     targetList.Remove(node2.Value);
     targetList.AddBefore(node,temp);
    }
    node2 = node2.Next;
   }
   node = node.Next;
}
しかし、この処理はたぶんすごく遅いと思われる。


こうしておけば一番近いものがtargetListの最初に常におかれる状態になる。
あとばボタンで切り替える処理だ。
if(target == targetList.First.Value && targetList.First.Next != null)target = targetList.First.Next.Value;
else target = targetList.First.Value;
targetにファーストが入っており、かつ2番めがNullじゃなければ2番めをターゲットにする。
これはあとで改良するつもりだ。3番目に辿りつけないからである。

こう問題もまだ残っているが大体形になってきた。


さて、次はタイトルシーンなどを考えてみようか。



アリーヴェデルチ。

2013年6月9日日曜日

ハロー

モネです。

ここ最近いろいろ忙しくて

ちゃんと3DCGをかけないことが多かったので

余り更新してませんでした。

すいません。

今週は結構休みの日が多いので頑張っていきます。



キャラの体のUV操作は終わりました。

すごく変ですが

仕方ないね。



















今は髪の毛をやっているのですが、これまた難しい・・・

これのキャラはバイトへ行くまでに完成させて

バイトから帰ってきたら

また新しいこと始めたい。

頑張ろう・・・



今はMetaseqoiaを使っているのですが

実はこれ、

一か月間のお試し期間のものを

使っているので

あと10日ほどで終わってしまいます。

マジで頑張りますわ・・・


2013年6月8日土曜日

UI

諸君、ご機嫌(ry

ゼルク・ハーデスだ。


UIの方を実装中だ。

と言ってもリソースが無い…のでUnityではじめるゲームづくり の本を参考に、サンプルを使って学習中である。


前述した通り、この本はjavascriptで書かれてるためそのままC#に置き換えようとしても無駄無駄無駄無駄である。

例えばRect(引数)というものを使おうとしよう。

そのままC#で書くとエラーを吐かれる

newすればいいんだけど調べなければわからないよコンナノ・・・


躓きながら1歩1歩前に進んでいこうと思う。




しかし、この本はマウスでクリックしたらアイテムを消費する
というゲームなのだが、今作っているのはコントローラーを使用するためマウスは使わない。

その処理をどう書けばいいのかーーーと今から考えてみようと思う。





なんだか俺様個人のブログになってしまっているぞ!!
モネはバイトやら人付き合いで忙しいのか?



ふふふ・・・この孤独の闇に生まれたゼルク・ハーデスは友人など皆無なのだッ!
フーッハッハッハッハッハははは・・・


アリーヴェデルチ。

2013年6月7日金曜日

敵AI(クズ)

諸君、ご機嫌いかがだろうか?

ゼルク・ハーデスだ。



前回の記事でダークソウルのような移動を書いたがあれだとスティックの倒し具合でスピードの変化を付けられない事が判明した。

transform.fowardにスピードをかけているんだから当たり前つっちゃあ当たり前か。

ならばそこにスティックの傾きを掛けてやればいい。

とりあえず適当な変数に傾き具合を入れておく
float joyX = Input.GetAxis("JoyX");//X軸
float joyY = Input.GetAxis("JoyY");//Y軸
ジョイスティックは-1.0~1.0の数値が入る。(0は何もしていない状態)
コレをtransform.fowardにかけてやればいいんだが負数が入るとダメなので
if(joyX < 0.0f) joyX *= -1.0f;これをYにもする。
そして
if(Mathf.Max(joyX,joyY)  >= 1.0f) moveDirection = transform.foward * runSpeed;
else moveDirection = transform.foward * walkSpeed;
こうすれば全部倒しきっていたら走って少し倒してたら歩くという処理ができる。

これは2種類しか作ってないけど
float joy = Mathf.Max(joyX,joyY);ってやって
moveDirection = transform.foward * speed * joy;
とやれば倒し具合によってスピードが変化するだろう。

私は歩く、走るがあればよかったので前者をとりいれた。


何度も言うが素人が考えたソースなのでもっといい方法があるかもしれない。

悩んでいる人がいればなにかきっかけになれば幸いだ。


そして敵AIのほうはスフィアコリジョンをつけてtriggerにチェックいれる。
コリジョンに入ってきたらプレイヤーの方向を向いて一定の距離まで来たら追いかけてくる
といった処理だ。
OnTriggerEnterでフラグを立てて
Updateで動かせば簡単にできる。

Vector3.Distance(ターゲットポジション、自分のポジション)で距離が求まる。

しかし、コレではそーっと後ろをとって致命の一撃!!なんてことができないので改良しなければ・・・


あとは地面に落ちないようにとか難しそうなことが残っているが後回しでいいだろう。


攻撃の処理がイマイチよくわかんないんだよね。武器にコリジョンをもたせるだけでいいのかな?

そしたら攻撃してないのに敵にダメージを与えれたり・・・
フラグか?

いろいろ難問を残している・・・


アイテムの入手の処理も終わったので次はUIかな。

連休なのでちょっと頑張りたい。




話がそれるがC++でのゲームづくりでキャラクターのマネージャーを作っているんだが
アイテムや武器、弾も一緒にいれてもいいのだろうか・・・莫大な量になって見難くなりそう。


アリーヴェデルチ。

2013年6月5日水曜日

ダークソウルのような移動処理 と UnityでPS3のコントローラーを使う

やあ諸君、体調はどうだい?

ゼルク・ハーデスだ。


先日はダークソウルやデモンズソウルの移動を真似て見ようと思って試行錯誤していた。
キャラクターがどこの場所にいようと【カメラから見て】上下左右動くようにする。
といった処理だ。

まず、カメラのTransformを持って来なければならない。

public Transform cameraTransform;
と変数を指定した。
プレイヤーにscriptを適用させinspectorでcameraTransformがNoneになっていると思うのでそこにカメラをD&D。
これでカメラのTransformを持ってくることができる。

初期化で
cameraTransform = (Transform)GetCommpornentうんたらかんたら
とかタグとかでカメラを取ってこようと思ったけど上手く行かなかったのでインスペクタから指定してやる。

ほんでプレイヤーの処理
    moveDirection = Vector3.zero;
    Vector3 targetDirection = (cameraTransform.right * Input.GetAxis("Horizontal")) + (cameraTransform.forward * Input.GetAxis ("Vertical"));
moveDirectionは移動する方向だ。とりあえず0を入れておく。あとで使用する。

targetDirectionにまず、カメから見て右ベクトルに入力値(右が押されていれば1、左なら-1、押してないなら0)をかけてやる。そしてカメラの向いている方向のベクトルに前後の入力をかけてやる。これを足す。
そして回転だ。
クォータニオンで回転してやる。
transform.rotation = Quaternion.LookRotation(targetDirection);
targetDirectionの方向を向く処理だ。
もう後はmoveDirection += transform.forward * speed;向いている方向に直進する。

characterController.MoveにmoveDirectionをぶち込めば動くだろう…


これでカメラから見て前後左右に動けるようになった!


はずだ。
実はここまで生意気に解説してきたがカメラの設定をしていない。

これからしようと思う。
※追記
 カメラの実装が終わってテストしてみた。
 カメラを上下に動かすとキャラクターも上下を向いてしまう。
 なのでベクトルのYの値を持ってこないようにしなければならない・・・
 後は左スティックでキャラの移動、右でカメラの移動と上手くいったので
 上記の改良をすれば細かいことは置いといて形にはなるだろう。
 targetDirectionに入力を入れた後targetDirection.yに0を入れればいいと思う…
 動作確認はできたがこれが良いプログラムか自信はない…ゴミソースと文句言われそうだな。


ちなみにPS3のコントローラーをUnityで動かせるようにしてみた。
MotionJoy ←のリンクの上部にDownwardsがあると思うのでそこをクリック。
32bit and 64bit all in one: site 1










Version 0.7.0000(testing)
Site1 をクリックしてDL。インストール。
コントローラーをつないで起動。上部Driver Managerをクリックしてチェック入れてLoad Driver
上部ProfilesのPlaystation 2' (for PCSX2 with pressure sensitive)を選択しEnable(適用)
PS3を選ぶとモーションセンサーが働いてしまい右スティックとごちゃごちゃになってしまう…(多分…)
そしてGame Control Panelでゲームコントローラーが出てくるのでプロパティでテストしてみよう。
ボタンの配置などはそれで覚えておこう。
 
 
あとはUnityのInput Managerをいじって見ればいいと思う。
 
わかりにくいかもしれないが意外と勘でいける
 
あとはスティックの倒し具合で移動速度を調節しなければならない・・・それは最後の方でいいか。
 
とりあえずはカメラを作ろう。
 
 
こんなド素人丸出しの解説だが誰か1人でも役に立てば嬉しい。
 
 
さて今日もがんばってみよう。
 
アリーヴェデルチ。

2013年6月4日火曜日

UV操作ムズイ

モネです。

今日はゲーム制作プロジェクトという物の

説明会に行ってきました。

とってもためになりました。

ゼルクさんがやっているunityについてのことや

3DCGのことについて質問もさせていただきました。

本当に参考になるお話ばかりで

とてもモチベーションが上がりました。

頑張ろう。



現在ちっちゃいローポリモデルを作っているのですが

UV操作がとっても難しい・・・

アニメ系のモデルを作るときは

そんなに気にしなくていいということを

 聞いたので体はもう適当になってしまったのですが

初めからこんなのではいけないと思い、

手のUV操作で今頑張っています。

丁度今、手のひらが終わったところです。


こんな感じです。


















何かきれいにならない・・・

モデリング自体へたくそなのもあるかもしれませんが・・・

もっと数をこなさなければならないですね。

はやく自分たちのゲームを作りたいです。


今はMetasequoiaというソフトで

3DCGを作っているのですが、

今日ゲーム制作会社の方に聞いたところ

やはりMAYAを並行してやっといたほうが絶対いいよ、

と言われたので

MAYAの操作の勉強もしていきたいと思います。


今日から僕は富士山だ。

闇プログラマーのゼルク・ハーデスだ。

諸君、ご機嫌いかがだろうか。
タイトルにもあるように 私は闇プログラマーのゼルク・ハーデスだ。

私は鼻炎に悩まされている。

点鼻薬が無いと呼吸ができない程辛いのだ。

さて、ゲーム作りの方だが今回はUnityを使っての制作になっている。

モネがキャラクターモデルを担当し、私がフィールドとスクリプト(プログラムだな)を担当している。

一応最初のエリアは作り終えた。だがセンスというものが皆無なのだ。ただ木と草を植えただけのプレイステーションの初期のゲームみたいになってしまった。

まだこれからスクリプトを書かなければならないのでとりあえずはコレで行くつもりである。

Unityは「Unityではじめるゲームづくり」という本を参考にしている。

しかし、コレはjavascriptで書かれているためC#に書き換えるのはとても苦労する。現に調べてもわからないエラーが出てきたりUnityがフリーズして落ちるといった症状がでている。(多分while文がおかしいのだろう…)
かなりトラブルが多発しているがMMDの初音ミクのモデルを拾ってきてとりあえずそれを動かしてみようと思っている。

MMD for Unityがあれば簡単にインポートできるであろう。


現段階では初音ミクはインポートできたがコイツにcharactercontrollerを追加しようとしたらエラーを吐いてしまった。

とりあえず今日中には初音ミクを操作できるようにしたい。

そのあとカメラの設定をして死亡処理を書いていくつもりだ。


そして敵を追加していこうと思っている。

先はまだ長そうだが夏休み中には今作っているのとTPSの2本くらいゲームを作りたいと思っている。

人手不足というのもある。2Dのリソースを書ける奴がいないし、BGMも多分拾ってくることになるだろう。声もモネと私で担当するか、友人のT君に頼むか・・・



不安が残るが頑張っていこうと思う。



アリーヴェデルチ。

2013年6月3日月曜日

はじめまして

3DCG担当のモネです。

今日から頑張ります。

よろしくおねがいいたします。


モネ