トップページgamedev
1001コメント386KB

【3Dゲームエンジン】Unity質問スレッド12

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/09/21(日) 00:19:55.04ID:2Rw6dtcb
3Dゲームエンジン「Unity」の質問に優しく答えるスレです。

Windows/Mac用。JavaScript/C#/Booといった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他

次スレは>>970を踏んだ方が建てること。ダメなら>>980>>990が建てて下さい。

■前スレ
【3Dゲームエンジン】Unity質問スレッド11
http://peace.2ch.net/test/read.cgi/gamedev/1407243744/

■本スレ
【3Dゲームエンジン】Unity総合スレッド23
http://peace.2ch.net/test/read.cgi/gamedev/1404212872/

■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
 http://www24.atwiki.jp/unity2ch/

●リンク
・Unity(日本公式サイト)
 http://unity3d.com/japan/
・ユーザーガイド&リファレンス
 http://japan.unity3d.com/developer/document/
・チュートリアル
 http://japan.unity3d.com/developer/document/tutorial/
・スクリプトリファレンス
 http://docs-jp.unity3d.com/Documentation/ScriptReference/
・FAQ
 http://answers.unity3d.com/index.html
・MSDN
 http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
0398名前は開発中のものです。2014/10/07(火) 21:04:21.02ID:Q1M5iAAa
ひよこ本のp.221のゲームオーバー画面が下記のエラーで表示されません。

@NullReferenceException: Object reference not set to an instance of an object DeathCounter.Start() (at Assets/script/DeathCounter.js:11

誰か教えてください。お願いします。
0399名前は開発中のものです。2014/10/07(火) 21:08:30.23ID:yYtLZWP3
>>398
ゲームオーバー画面のエラーは、アセットをかうとなおると思いますよ
0400名前は開発中のものです。2014/10/07(火) 21:40:38.85ID:s5rmuQR1
wiiリモコンを使うためにWiimoteLibを使っているのですが、このエラーが出てよくわかりません

IOException: Invalid handle.
System.IO.FileStream..ctor (IntPtr handle, FileAccess access, Boolean ownsHandle, Int32 bufferSize, Boolean isAsync, Boolean noBuffering) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.IO/FileStream.cs:97)
System.IO.FileStream..ctor (IntPtr handle, FileAccess access, Boolean ownsHandle, Int32 bufferSize, Boolean isAsync)
System.IO.FileStream..ctor (Microsoft.Win32.SafeHandles.SafeFileHandle handle, FileAccess access, Int32 bufferSize, Boolean isAsync)
(wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (Microsoft.Win32.SafeHandles.SafeFileHandle,System.IO.FileAccess,int,bool)
WiimoteLib.Wiimote.OpenWiimoteDeviceHandle (System.String devicePath)
WiimoteLib.Wiimote.WiimoteFound (System.String devicePath)
WiimoteLib.Wiimote.FindWiimote (WiimoteLib.WiimoteFoundDelegate wiimoteFound)
WiimoteLib.Wiimote.Connect ()
Wii.NewBehaviourScript.Update () (at Assets/NewBehaviourScript.cs:17)

対処法をお願いします。
使用OSはwindows7 64bit です
0401名前は開発中のものです。2014/10/07(火) 21:50:55.32ID:5kMz3ls7
>>398
なんか前スレにそんな話あったけど答は書いてなかった。

#pragma strict
static public var DeathCount:int;
//@文字のパラメータ
var style : GUIStyle ;
function Start () {
DeathCount = 0;
//ここにstyleを初期化する式を書く
style.fontSize = 40;//この行がエラー出してる。多分初期化なしでアクセスしようとしてるから?
style.normal.textColor = Color.red;
(略
多分こんな話。C#ならそこにstyle=new GUIStyle();
とか書くんだがjsでどうかくかは知らん。誰か答えてあげてくれw
0402名前は開発中のものです。2014/10/07(火) 21:59:28.24ID:Jl68e1pi
その本知らないけど初期化はAwakeに書けばいいだけでは
0403名前は開発中のものです。2014/10/07(火) 22:04:03.41ID:yYtLZWP3
>>400
wiiリモコンを使うためには、アセットを買ったほうが簡単ですよ
0404名前は開発中のものです。2014/10/07(火) 22:44:33.45ID:HbJZxG8P
Start()とUpdate()以外のベース関数として、
Awake()
OnEnable()
OnFixedUpdate()
OnGUI()
OnDestroy()
くらいは頭に入れておいたほうがいい。
あと、コルーチン。

http://docs-jp.unity3d.com/Documentation/Manual/ExecutionOrder.html
0405名前は開発中のものです。2014/10/08(水) 00:18:32.95ID:j96m9Ysa
>>398
作者に聞けよ。
答えられなかったらエラーで動かない本を出した詐欺になるから訴えろ
0406名前は開発中のものです。2014/10/08(水) 00:23:23.93ID:IuJbFAW1
今簡単なカットインを作っていて(スプライト画像を少し動かして止まるだけ)
実際に作ってみたら元々の画面で表示してた文字がカットインの上にも写っててうげってなったのだけど
文字よりスプライト画像を優先して表示する方法ってカットイン用にカメラをもう1つ用意してディプス変えるしかないかな?
なにか簡単な方法があれば教えてください
0407名前は開発中のものです。2014/10/08(水) 01:16:40.61ID:Fx6RR5xk
>>406
文字よりスプライト画像を優先して表示するには、アセットをかうのが簡単ですよ
0408名前は開発中のものです。2014/10/08(水) 02:46:01.73ID:sd4OTG+E
>>406
layerの表示順とかじゃダメなの?
0409名前は開発中のものです。2014/10/08(水) 06:51:40.74ID:u6RzNJNC
>>406
uGuiならまぁ大体そんな感じ。
厳密に言うと、
既にあるCanvasのrender設定をOverlay以外に変更 or
新しくカットイン専用のCanvasを作る(必要ならCameraも)
→layerを調整 だね。

NGUIならそのままスクリプトでカットインのdepthをいじればいいと思うよ。
0410名前は開発中のものです。2014/10/08(水) 09:14:59.11ID:RI56PPR4
地形を規則的に波状にしたいのですが
Terrainを使うと綺麗にできません。
上手に作れる方法または
そういったスクリプトなど有るのでしょうか?
0411名前は開発中のものです。2014/10/08(水) 10:39:44.06ID:Kfz+eIpv
>>410
inspector の Terrein script 直下に機能選択タブがある
この一番右の歯車をクリック

一番下のimport rawボタンでrawなビットマップをインポートできる
データのフォーマットは heightmap resolutionの二乗サイズのバイト値の集合なのでこのデータを機械的に作ってやれば良い。
規則的に波上にしたいなら三角関数で任意につくれるだろ?
0412名前は開発中のものです。2014/10/08(水) 13:10:50.47ID:RI56PPR4
>>411
ありがとう。
下3行のうち一番下はわかるけど
上2行がわからんわ。

ちょいと調べてみます。
ありがとうありがとう。
0413名前は開発中のものです。2014/10/08(水) 13:39:32.30ID:RI56PPR4
>>411
しらべた!
おー、コレは簡単だ。
ありがとう。

ここを参考にしたよ。
http://www.atsuhiro-me.net/unity/dev/terrain-heightmap
0414名前は開発中のものです。2014/10/08(水) 15:18:03.99ID:YvaGWdB1
オブジェクトに当たり判定をつけるときにColiderをつけますが
あれって□や丸などあらかじめ決められた形のものしか設定できないのでしょうか
0415名前は開発中のものです。2014/10/08(水) 17:19:06.81ID:Kfz+eIpv
>>413
乙、頑張れ

>>414
Mesh Colliderというメッシュ形状に合わせた衝突判定オブジェクトがある、多用すると重くてかなわん(メッシュ形状最適化とかのアセットがあるくらい)、まぁ最近のPCなら大丈夫だけどな
あと通常のゲームにおいてMesh Colliderが必要な物ってそうそうない。(FPSくらいだ)
0416名前は開発中のものです。2014/10/08(水) 17:44:20.31ID:tDFu0Htx
>>414
MeshCollider
0417名前は開発中のものです。2014/10/08(水) 17:46:03.30ID:tDFu0Htx
しまったスマン アレ系統の単語は透明NGするようにしてたからすでに返答されてたの気づかんかった
0418名前は開発中のものです。2014/10/08(水) 18:47:00.64ID:UNDKF68b
NGUIのButtonのOnClick的な機能がついたAsset、もしくはGUIベースで似たようなことが可能な方法ってあったりしますでしょうか?
0419名前は開発中のものです。2014/10/08(水) 19:05:29.58ID:YvaGWdB1
>>415
>>416
ありがとうございます スマホアプリを作るうえで探していたのであまり使わないほうがよさそうですね・・・
0420名前は開発中のものです。2014/10/08(水) 20:58:20.92ID:Kfz+eIpv
>>417
アセットだけでNGにしてるとなるよね
あのbotマジ迷惑
0421名前は開発中のものです。2014/10/08(水) 22:30:36.72ID:IuJbFAW1
レスありがとう
GUIです

>>408
文字にはスプライトと同じレイヤーの順番が付けれない気が
そしてスプライトに3Dと同じ優先順位をつけるにはカメラ増やさないといけない気が

>>409
やはりこれしかなさそうですかね

とりあえず暫定処置でカットイン中は文字を消してみたけど、ちょっと違和感あるなー
最悪カメラ増やすかな
もし他にご存知のかたいたらお願いします
0422名前は開発中のものです。2014/10/09(木) 00:05:47.29ID:pOzuDkYu
そういうときは「Unity 2Dガイドブック―誰でもできる簡単ゲーム制作」を買うと解決すると思いますよ
0423名前は開発中のものです。2014/10/09(木) 01:18:19.97ID:g3qS9iox
>>421
たぶん2つ勘違いしてるんなじゃないかな。

まず、カメラを増やすのは必須ではないよ。
必須なのはOverlayでないCanvasを用意すること。

それと、もしカメラを増やすにしても、それは決して難しいことでも煩雑なことでもないよ。
むしろ空間の把握と管理のために複数カメラにすべき構成のほうが多い。
0424名前は開発中のものです。2014/10/09(木) 02:41:30.58ID:QEk+5VvL
>>422
ゴミに多重債務抱えたみたいでワロタw
0425名前は開発中のものです。2014/10/09(木) 13:04:03.92ID:Hp0Z8Ppw
>>421
それはアセットをかえばどうにかなると思いますよ
0426名前は開発中のものです。2014/10/09(木) 14:33:16.49ID:tGgRD0EY
>>423
ふおおおお
なんか知らない単語が出てくるなと思って調べたら4.6のベータが来てたんですね
ありがとう
Canvas便利そうね
4.6正式公開までこの部分は放置します!
0427名前は開発中のものです。2014/10/09(木) 15:27:12.35ID:+VloW8aa
cubeもしくはSquare上にprayerを歩かせようと考えています。
重力を地球のように中心にさせるにはどのような方法があるでしょうか。
よろしくお願いします。
0428名前は開発中のものです。2014/10/09(木) 16:27:03.20ID:K1rYK9Oo
cubeのposition - playerのpositiionで作れるベクトルを使って重力を与えれば良いんじゃないの
0429名前は開発中のものです。2014/10/09(木) 16:34:53.76ID:Hp0Z8Ppw
>>427
cubeやSquare上にprayerを歩かせるには、アセットをかうのが一番ですよ
0430名前は開発中のものです。2014/10/09(木) 17:33:26.86ID:q1cDEZhk
その場合CharacterControllerは無意味だから注意な
ほんと中途半端な機能だよコレは
0431名前は開発中のものです。2014/10/09(木) 17:48:47.26ID:taQp7ENX
>>427
これだな。
ttp://clubknot.net/?p=446
0432名前は開発中のものです。2014/10/09(木) 19:06:47.46ID:3JXyqIMM
一つききたいんですが、ゲームでイベントシーンを作る時の、
キャラクターのモーション等の良い作り方はありませんか?
blenderでいちいちモーション付けして、unityで合わなかったら
またblender・・・っていうのは少しきついものがあるので・・・
0433名前は開発中のものです。2014/10/09(木) 19:15:26.60ID:O27DuRqo
微調整ならUnityでもできる。
もちろんそこからまたBlenderに戻る、ってのはできないが。
そもそも合わないってどういうことなのか。
合ったモーションを作ればいいし合ったモーションを作る為に
必要な要素がBlenderでの作業時に揃えられてないってだけの話では。
0434名前は開発中のものです。2014/10/09(木) 19:28:52.23ID:q1cDEZhk
最近のゲームだってイベントだからって全く違和感ない動きをするものばかりじゃない

ところでUnityフォーラムのスクリプトを綺麗にコピペする方法ってない?
普通に全選択してコピーすると行番号までコピーされて困る
0435名前は開発中のものです。2014/10/09(木) 19:57:38.49ID:3JXyqIMM
>>433
>>434
ありがとうございます!
微調整できるんですね!調べてみます!
0436名前は開発中のものです。2014/10/09(木) 20:36:59.12ID:O27DuRqo
え?Unityでやんの?だったらちょっと書いとくけど
AnimationはFBXに含まれてるままでは編集できない。
プロジェクト内に複製して(Ctrl+D)それをAnimatorControllerなり
Animationコンポーネントに放り込んだ上で
ヒエラルキーに置いた状態でそのオブジェクトを選択している時に
Animationウインドウで編集可能になる。
0437名前は開発中のものです。2014/10/09(木) 20:37:08.13ID:Hp0Z8Ppw
>>432
キャラクターのモーションを作るなら、アセットを買えばいいとおもいますよ
0438名前は開発中のものです。2014/10/09(木) 22:06:46.11ID:1BQk+EqV
>>432
437は無視で。
この本にモーションのこと詳しく載ってるから買いなさい。
「Unity 2Dガイドブック―誰でもできる簡単ゲーム制作」
0439名前は開発中のものです。2014/10/09(木) 22:23:26.78ID:DgWKwk8m
>>438は無視で。
この本にモーションのこと詳しく載ってるから買いなさい。
ひよこ本
0440名前は開発中のものです。2014/10/09(木) 22:24:07.39ID:Mg4VNV/D
ひよこ本には載ってないおwww
0441名前は開発中のものです。2014/10/09(木) 22:56:09.90ID:CUPe6svR
上の全部は無視してこのDVDを買いなさい
「変態村」
0442名前は開発中のものです。2014/10/09(木) 23:38:02.66ID:Hp0Z8Ppw
>>439は無視で。
アセットをかうほうがいいと思いますよ
0443名前は開発中のものです。2014/10/09(木) 23:41:45.53ID:IbqNHLdk
cubeで地面を作って走るとやたらガッタガタ走るんだけど
なにか思い当たる理由ありますか?
terrainの上は普通に走る。
0444名前は開発中のものです。2014/10/10(金) 00:18:18.04ID:OZmypWXW
スマホ用の2Dゲームを作っているのですが、
当たり判定などがなく、ただ表示するだけの2D画像は、
どのように(何を使用して)表示すれば良いでしょうか?

タップすると右に若干動いて元の位置に戻るという動きの為に、
iTweenの使用を考えているので、DrawTextureは使用できず悩んでます。

こういった場合、スクリーン座標を計算してInstantiateで表示するのか、
iTweenを使用せず、DrawTextureを使用するのか、
はたまた他の何か使用して表示するのが良いのでしょうか?
0445名前は開発中のものです。2014/10/10(金) 00:40:01.56ID:8QkzWbMq
>>444
ふつーにスプライト
表示したい画像のインポート設定をSpriteにしてシーンビューにドラッグドロップだ
0446名前は開発中のものです。2014/10/10(金) 01:59:22.34ID:iFYmggXm
>>444
ただ表示するだけの2D画像は、アセットを買えば簡単に表示できますよ
0447名前は開発中のものです。2014/10/10(金) 09:58:08.41ID:yqnegn7/
無料版のUnityと無料版のVisualStudioで
デバッグ(ステップ実行やブレイクポイント)にチャレンジした人いますか?
0448名前は開発中のものです。2014/10/10(金) 10:06:57.44ID:HJ2rnFEr
>>447
ノシ
0449名前は開発中のものです。2014/10/10(金) 11:06:59.99ID:ctWHOmHg
>>443
リジッドボディ系で斜面を走るとがたつきがち、ってのはあるが
その程度かな。
0450名前は開発中のものです。2014/10/10(金) 11:38:44.63ID:Kxxnf336
>>448
447じゃないけどできた?
自分はvs pro持ってたから試してないんだけどできるなら友人に勧めてみたい!
0451名前は開発中のものです。2014/10/10(金) 11:44:37.53ID:OZmypWXW
>>445
返信ありがたいです。
そのSpriteをプログラムから表示する際は、
Instantiateを使用するのでしょうか?
0452名前は開発中のものです。2014/10/10(金) 12:03:40.33ID:VJTEBvPJ
>Instantiateを使用するのでしょうか?

アセットをかえばいいと思いますよ
0453名前は開発中のものです。2014/10/10(金) 17:28:00.15ID:sRvKk7FT
キャラクターだけはアセットストア探しても自分好みのが少ないから作るしかなさそうだな
ここにいる人達はMAYAとか買って作ってるんですか?
0454名前は開発中のものです。2014/10/10(金) 17:33:12.99ID:mMtmwaKy
Blenderだろう。タダだし。
ゲームモデル作る分にはmayaやMaxに劣るところはないしね。
0455名前は開発中のものです。2014/10/10(金) 17:58:43.91ID:o1s7jWOR
>>453
キャラクターなら、アセットを買って作ればいいと思いますよ
0456名前は開発中のものです。2014/10/10(金) 18:23:49.89ID:gZPiWpHw
>>453
3Dの方がメインでついでにunityの場合とプログラムメインで3Dにも手を出しちゃう場合で違うよ

ちな3Dでクリーチャー以外を作りたいなら最低限作りたいキャラの3面図を描けるなり用意できる必要が有るよ。
レゴみたいにはいかないから気をつけて
0457名前は開発中のものです。2014/10/10(金) 18:29:23.73ID:UHEUnESL
>>453
お金出せるなら絵柄が気に入っている作者に直接のアプローチができるのがUnityのアセットストアの面白さの一つだと思う。
アセットの連絡先が絶対について回るんで直接連絡とれるってのはある意味良い点だと思う。

だからっつってGoogleの住所晒しは肯定しねぇかんな>>グーグル
0458名前は開発中のものです。2014/10/10(金) 18:49:30.51ID:sRvKk7FT
たくさんの返信ありがとうございますw

>>454
ありがとうございます
無料なのでとりあえず試してみる事にします
そういえば本もいろいろありましたね

>>456
3Dの方がついでです
でもカワイイキャラを出したいっていう矛盾
CG頼めそうな人がいないので絵の基本から学ばないといけないですかね

>>457
ホームページ見たらハングルで手も足もでないです
せめて英語なら
0459名前は開発中のものです。2014/10/10(金) 18:58:17.52ID:gZPiWpHw
>>458
3面図が製図としてパーツ位置の破綻無く可愛いと思える絵柄で描けるなら基本はやらなくていいよっ

または左右非対称で灰色でグニャグニャした「幼稚園児が初めて作ったお母さん」の粘土細工を可愛い(キャラ)と思い込むという手も
0460名前は開発中のものです。2014/10/10(金) 19:29:42.07ID:sRvKk7FT
>>459
なるほど
絵のかきかたのサイトとかでそういうのがあった気がします
参考にして書いてみますね

私のおかんはジャイアンのかーちゃんよりこわいので可愛いと思うのはキツイです
0461名前は開発中のものです。2014/10/10(金) 19:37:50.60ID:BGZ+PIpx
色々入れたAssetを個別に消すにはProjectから探して自力でDeleteするしか無いのでしょうか?
色んなフォルダに分散してたりしてめんどいのですが…
アセットは買います
0462名前は開発中のものです。2014/10/10(金) 19:44:34.60ID:UHEUnESL
>>461
入っていても使って居ないならビルド先には含まれない(Resources,Plugins,StreamingAssetsの3種のフォルダにあるものは必ずビルドバイナリに入る)
あともう一度Importしようとするとすでに入っているものはnewのマークが付かないのでこれをメモして削除してもよいかもしれない。

一番良いのは使ってないアセットの削除機能の追加をUnityに申し込んでおくことかもしれない。(実現するかは別として)
0463名前は開発中のものです。2014/10/10(金) 20:25:00.81ID:BGZ+PIpx
>>462
あっやっぱりメモって自分で整理していくしか無いんですね
ありがとうございます
DLしたパッケージ一覧の所で個別にアンインストールできたら一番良いんですけどねぇ…

ストア回って色々試したくなった時用のプロジェクトを別に作っとこうかな
0464名前は開発中のものです。2014/10/11(土) 11:35:08.24ID:L3QzhoXA
メタセコイアはあまり使われないのかな?
0465名前は開発中のものです。2014/10/11(土) 12:02:11.40ID:dfVR3Wh4
初心者です
シーン移動した際に操作できなくなってしまいます

キャラクターを動かすタイプのゲームなんですが、
オブジェクトにさわる → 次のステージにいったあとメインカメラ・キャラは次ステージに存在しているのにフリーズ?してしまいます
移動にはApplication.LoadLevel("");を使っています
0466名前は開発中のものです。2014/10/11(土) 12:05:32.11ID:dfVR3Wh4
↑すいませんたった今自己解決しました
0467名前は開発中のものです。2014/10/11(土) 14:04:37.28ID:VeIKrkKE
http://upload.saloon.jp/src/up12255.jpg
0468名前は開発中のものです。2014/10/11(土) 16:25:36.64ID:7lSxqAYK
質問です
uGUIでプレイヤーを操作する十字キーとボタンを作りたいです
OnClick()のところにプレイヤーオブジェクトを設定
GameObject->SendMessage(string)でプレイヤーオブジェクトのメソッド名を入れて動かすことはできたのですが
「ボタンを押した時だけ」ではなく
ボタンを押している間、プレイヤーを移動させるメソッドなどを呼び出すにはどうしたらいのでしょうか
0469名前は開発中のものです。2014/10/11(土) 17:09:21.38ID:mtuhy6ay
>>468
タブレットやスマフォ用にJoyStick真似クラス作るって事?
importでStandard Assetsにmobile joystickのプレファブあるからそれ使えば良いんじゃないの?
UnityでProjectウィンドウ上で右クリックimport packageメニューからStandard Asset(Mobile)って項目選べば使える。
0470名前は開発中のものです。2014/10/11(土) 18:28:25.87ID:p3Ry01Sq
メタセコはFBX出力できpro版rを2万円に値上げした上に
機能が被るプラグインの開発を禁止して終わったよ
0471名前は開発中のものです。2014/10/11(土) 19:00:03.37ID:LE/BZYpl
>>468
uGUIでプレイヤーを操作する十字キーとボタンを作成するには、アセットを買えば簡単ですよ
0472名前は開発中のものです。2014/10/11(土) 21:00:10.18ID:RPwZNHVD
Unityに限らず、基本的なことですみません
キャラクターにアイテムを装備して攻撃した時、装備したアイテムによって、遠距離攻撃や近接攻撃と振る舞いを変えるときどのように実装すれば、どうすればいいのでしょうか……

列挙型か、配列を使って装備したアイテムをキャラクターの変数に代入することまでは考えたのですがそこから先がからっきしです…
0473名前は開発中のものです。2014/10/11(土) 21:04:55.31ID:mtuhy6ay
>>472
モノによるってのと一生懸命コーディングするってのはおいといて
基本的にアイテムの情報をテーブル化しておく
エクセルでもなんでもいいから表にしておき、そのデータを参照するクラスやメソッドを作る、
表の縦方向のインデックス(アイテムのID)でアイテム情報を引き出せばやりたいことの第一歩になる。
0474名前は開発中のものです。2014/10/11(土) 22:10:35.40ID:LE/BZYpl
>>472
アセットを買えば簡単に実装できますよ
0475名前は開発中のものです。2014/10/11(土) 23:53:29.80ID:p3Ry01Sq
RPGなら攻撃の度にリソースから読み出してもいいけど
アクションだとそうもいかないよな
0476名前は開発中のものです。2014/10/12(日) 01:39:43.78ID:JuIG8I2b
>>472
例えば、弾の弾速とか攻撃力を武器によって変えるぐらいなら473みたいなデータをもってりゃいいりゃいいが、
普通、武器クラス(コンポーネント)を作って、
それを継承して剣とか銃クラス作ってPlayerコンポーネントの武器スロットにつけるような感じかな。

Unityはコンポーネント指向なんだからテーブル化は基本じゃないよ。
0477名前は開発中のものです。2014/10/12(日) 02:05:52.70ID:e0xiKn8/
>>476
別にコンポーネント指向とテーブルデータは直交しないじゃないか
テーブル参照してコンポーネントのパラメタやAddComponentのコンポーネントをパラメタから行う関数とかがあっても良いわけだし。
どのみちテーブル化しないとデータの扱いで困るし、↑なんかはxls(csv) -> C# sourceジェネレータ作っても良いのだし
0478名前は開発中のものです。2014/10/12(日) 02:12:28.08ID:XguXipRJ
>>472
まずは配列で組もうとしてみる。
int[]で(id, name, attack, range)としたら、
sword (0, 0, 10, 2)
bowgun (1, 1, 5, 4)
→武器の名前もint?呼び出すの面倒?とりあえず2次元配列かジャグ配列?

次に、Hashtable。
(0, "Sword")
(1, "Bowgun")
→keyで呼び出しは楽だけど、要素の数だけ作る?

そして、ItemBean的な
メソッド無しの非Monoクラス作成。

public class ItemBean
int id;
string name;
float attack;
float range;
+コンストラクタ。

new ItemBean[] で配列インスタンス化。

→中身は直入力?データだけさらに別クラス用意?csvファイル?サーバー?



って感じでどんどん考えながら進むもんだ
0479名前は開発中のものです。2014/10/12(日) 02:22:22.52ID:3aBkHhJj
やっぱそうなるよなw
その辺のデータをどう組み上げるのかとか
本体のキャラクターデータとどう接続してくのかとか
ヘイト値とかヒットレート管理するのに他オブジェクトにそれをどう通知するのか、
その接続はどういう形式で行うのかとか。
その辺でデザインパターンみたいなのをすげえナルホドって思うw
0480名前は開発中のものです。2014/10/12(日) 02:54:14.49ID:Q5Z4GcsV
>>473>>476>>478
ありがとうございます!
武器ごとに攻撃方法を変更したいため、
プレイヤーが使用中の武器を取得後、使用中の武器によって、プレイヤーからの攻撃入力に合わせて弾を放つか、剣を振るのか、
なんのattack系の関数を実行させるのか、決めさせたかったのですが、武器オブジェクトごとにクラスを作り、中にパラメーターを保持させ、攻撃動作はコンストラクタにやらせるのでしょうか?
武器ごとにアタック関数を作ってしまってSendMessageを使ったほうがいいのでしょうか…
0481名前は開発中のものです。2014/10/12(日) 02:56:35.29ID:Q5Z4GcsV
テーブル化も魅力的なのですが、どのようにして代入した武器IDから、武器の攻撃方法を記した関数までたどり着くのか現状わかってないです……すみませんorz
0482名前は開発中のものです。2014/10/12(日) 03:11:03.79ID:JuIG8I2b
>>480
こんなような武器のベースクラスを作って、
それを継承してAttackインターフェースを実装する。
呼び出し側はAttackとかやれば、剣とか銃を意識しないで
Attackを実行してくれる。
継承した武器スクリプトは武器プレハブにくっつけて、
攻撃力とか編集する。
それをPlayerの武器スロットにつける。

Interface WeaponAction{
void Attack();
}

public abstract class Weapon : MonoBeiheaver, WeaponAction
{
public 攻撃力
abstract void Attack();
}
0483名前は開発中のものです。2014/10/12(日) 05:34:05.06ID:3PGpUtSD
>>478
もうね、ゴミが出ちゃったねw
0484名前は開発中のものです。2014/10/12(日) 09:21:31.08ID:Eto0LIQ5
インターフェースってなんですか><
0485名前は開発中のものです。2014/10/12(日) 10:10:16.78ID:WdWjdte7
>>484
ユーザーが操作できるものをインターフェイスと言います。
メニューやボタンやコンボボックスの他、
プログレスバーやテキスト表示もインターフェイスに含んだりします。

コンピューターと人間の相互性を実現するもの。
それがインターフェイス。

ガッテンしていただけましたでしょうか?
0486名前は開発中のものです。2014/10/12(日) 10:30:14.83ID:e0xiKn8/
>>484
クラスにおいて共通のMethod,Accessor等の呼び出し規約のみを切り出した物の総称
C#においては継承で指定することで呼び出し規約が共通であることを示す事ができる。
同一のインターフェースを持つクラスは変数の型にインターフェース名を指定することで別クラスであっても代入し保持することができる。

話の流れの中では>>482が具体例を挙げている
詳細が知りたいならC#の入門書でも読めば良い
0487名前は開発中のものです。2014/10/12(日) 11:26:17.39ID:uvKrlmrM
>>485
アセットを買えばガッテンしてもらえると思いますよ
0488名前は開発中のものです。2014/10/12(日) 12:17:14.00ID:1DkRfnhI
プッ
0489名前は開発中のものです。2014/10/12(日) 12:59:33.37ID:Q5Z4GcsV
>>482
ありがとうございます!
抽象化ですか…
知っているだけなので、頑張って実装してみます!
0490名前は開発中のものです。2014/10/12(日) 13:46:51.62ID:zcbnCOAM
この手のはいくつかの異なる系統のアイテムを実装しておいてから、
共通部分を探して抽象クラスなりインターフェイスなりにしている。
いきなり抽象クラス等を作るのは苦手だ。
0491名前は開発中のものです。2014/10/12(日) 13:55:16.08ID:XC/n9rL7
>>490
クラスの抽象化はアセットをかえば簡単ですよ
0492名前は開発中のものです。2014/10/12(日) 14:23:06.61ID:yNKkOl71
unity4.6にしてからプレハブの子オブジェクトを削除してctrl+Zで元に戻すと
元の位置とは別の位置に復活してしまうんだけど直す方法ある?
0493名前は開発中のものです。2014/10/12(日) 14:26:02.89ID:VhSRFU39
>>492
開発に言って直してもらうしか
0494名前は開発中のものです。2014/10/12(日) 14:29:42.62ID:XC/n9rL7
>>492
アセットをかえばなおるかもしれませんよ
0495>>4682014/10/12(日) 17:21:24.77ID:CrFEtBn9
>>469
ジョイスティックではなく普通のABボタンのようなものが作りたいんです...
現状だと押した瞬間しかメソッドを呼び出してくれないので
押している間、毎フレームメソッドを呼び出すようにしたいです
uGUIではこのようなボタンを作成することはできないのでしょうか
0496名前は開発中のものです。2014/10/12(日) 17:29:17.57ID:XC/n9rL7
>>495

ボタンを作成するには、アセットをかうのが簡単ですよ
0497名前は開発中のものです。2014/10/12(日) 17:35:40.31ID:3aBkHhJj
>>495
uGuiってボタンアップイベントないの?
つーか普通にフラグ用意して
ボタンダウンでそのフラグを上げる、アップでフラグを折って
そのフラグ判定でUpdate()がメソッド実行を判定すりゃいいんじゃね
■ このスレッドは過去ログ倉庫に格納されています