FC2ブログ
就活で精神攻撃を与えらた結果、こうなりゃ一人でやってやんよ!という理由でAndroidアプリの開発をしてるぼくの活動記録です。お金に成るクオリティにしたいのです^p^
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
今回GUIを作成する中で
Duplicateした要素にタグをつけてコードの中から
ソレらを取得した。
そんな可起きた事件である。

【問題】
タググループを取得して、コード内でGUIの表示を行う(テキスト)
そのなかで順序どおりに表示されなかった

ex.
text1
text2
text3...etc

としたいのが
text3
text7
text1...etc
となる

【解決】
gameobjectをFind(""+変数)の形でキャッシュして操作してやることで
狙い通りの動きを実現。

【詳細】
今回起こった問題はタググループ取得時に配列がどのように割り振られているかを
上手く認識できていなかったため起きたのだと思われる。

text1をDuplicateしてtext2を作る。
これらにタグをつけてやりコードにてfindWithTagを用いて配列として取得する。
このときx[0]番目にtext1が入るのかtext2が入るのか上手く認識できていなかった。
結果複数DuplicateしたObjectをコード内で操作したときに、上記のような問題が起きた。

なのでx[]をfor文でループさせてやりfind("text"+i)と言う形でキャッシュして
順序どおりの配列を得た。

こんなんに時間をとられてしまったぜ。・・・やれやれだな。
スポンサーサイト
Unityに分類するか迷ったけど一応Unityのゲームでやってるからそうした。

とりあえず自分なりに考えてダメージの計算方法を考えてみたのでメモ。
他のゲームがどういう風になってるかわからないし
グーグル先生に聞いてもポケモンとかの数値出すサイトしかないから
適当に算出してみた。

良くあるゲームの形式にのっとって例を出す。
例,
スライム
攻撃力:20
防御力:30
【技】
体当たり:5 

ゴブリン
攻撃力:40
防御力:30
【技】
こんぼう:8

と上記のステータスを持つキャラがいるとする。
体力などのステータスを今回無視。

んでどうやって出したかと言うと↓になる

(攻撃する側の攻撃力/攻撃を受ける側の防御力)* 技 = 相手に与えるダメージ

こんな感じ。

スライムがゴブリンに体当たりした場合
スライムの攻撃力20
ゴブリンの防御力30
スライムの体当たり5
となるので上に上げたの計算式に当てはめると
(20/30)*5≒3
こうなる。
自分の攻撃力を相手の防御が上回るためダメージは小さくなる

逆にゴブリン側が攻撃した場合
(40/30)*8 ≒ 10
という感じ
自分の攻撃力が相手の防御を上回るためダメージは大きくなる
んむ、実に整合性が取れているといえるのではないだろうか・・・

自分で適当にやった割にはなかなか的をいてるよな。
案外ソレっぽくできたからコレを採用してゲーム作りに励む。
Unityを使って育成ゲームを作る。
現在の段階では育成フェーズとバトルフェーズの二割がたといったところか。

ここいらで構想をまとめ、また実装する要素を洗い出してみよう。

育成フェーズ
・メニューによるキャラクタの育成
 →ステータス変動

・バトルフェーズへの画面遷移
 →大会等のイベントでバトルフェーズへ移行

・ステータスをバトルフェーズへ受け渡す

・キャラクタの変更、進化など

バトルフェーズ
・キャラクタ操作
・敵AIの実装
・GUI

大雑把に分けると上記のようになるが
このなかでのボトルネックはキャラクタ変更によるバトルフェーズの変化かな。
キャラクタ毎に独自のスクリプトを用意するのか?
育成フェーズでキャラクタの変更がなされたらソレをステータスで管理して
バトルフェーズではそのステータスから自キャラを生成する?
このとき生成する自キャラには固有のスクリプトがアタッチされることになるのだろうか?
敵キャラも同様かな。

このあたりがめんどくさそうだが小規模でやってみよう。

一応固定キャラでならバトルフェーズは大体仕上がってる。
明日はステータスによる攻防御のダメージ変化の実装を行おう。
タイトルに上手い具合はいらなかったけど
標準でインポートできる「Camera Relative Controls」は壁とかコライダを持つオブジェクトに当たると
変な方向転換をする。

バグとかではなく仕様なんだと思うけどコレがゲーム操作時だと不愉快。

ゲームで自キャラが壁、もしくは敵キャラなどにあたった時イチイチ変な方向を見ていたら
操作しにくいだろjk・・・。

ということで、ちょっと改良した。

【問題】
標準Camera Relative Controlsの衝突時、自キャラが意図しない方向に向く

【解決】
キャラクターコントローラ(以下CC)を小さくして、さらに子を追加。
追加した子にキャラクターなどのオブジェクトを配置してさらにボックスコライダなどの
コライダを追加する。
このときCCと追加した子のコライダは干渉させないようにする。
こうすることで他のコライダと追加した子のコライダが干渉し、CC干渉による意図しない方向を向く
問題を解決。


今回の問題はCCと他のコライダが干渉することで起きるものだと思うので
この方法で無事に自分の思う動きができた。


あと、追加でCamera Relative Controlsで使われてるカメラはズームイン、アウトで
障害物をよけてくれるがこの仕様がわずらわしいことがある。

この場合cameraのインスペクタの「ZoomCamera」スクリプトのzoomMaxの値を0にしてやれば
なくなる。

今回作りたいものではこの動きが邪魔になるのでこれでなんとかしてやった。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。