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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/08/05(火) 22:02:24.88ID:WCQkNfyP
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質問スレッド10
http://peace.2ch.net/test/read.cgi/gamedev/1403791323/

■本スレ
【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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
0452名前は開発中のものです。2014/08/30(土) 11:28:37.65ID:Lx2WUZ4h
Unity最近使い始めてある程度なれて来たんだが
これ画面に文字とかボタンとかのGUI表示できないの?
あとunityってストーリーのあるRPGとか作るのにあんまり向いてない?
2DのストーリーありのRPG作ろうと思うんだけど
0453名前は開発中のものです。2014/08/30(土) 11:30:11.82ID:TXvo3xTj
>>450
どうやりたいのか知らんが例えばDetonatorが
爆発した時Forceを加えてるのと同じ方法がやりたいなら
DetonatorForce.csのoverride public void Explode()関数の
中身を見れば大体やってることはわかると思う。
例えばだがその中に
SendMessage("OnDetonatorForceHit", null, SendMessageOptions.DontRequireReceiver);
という文があるのでそこのnullに適当な値を放り込んで
OnDetonatoroForceHit()を被ダメージ関数として書いてやるか
もしくはSendMessageの内容自体を自分が使ってる被ダメージ関数に書き換えちゃっても良いと思う。
ダメージの値はDetonatorForce内で計算していないので直接は取れないが
基本的には物理エネルギー減衰だから距離の逆2乗測で同じような結果になるんじゃないか。
具体的に書けば
float damage=1-(_explosionPosition-hit.transform.posion).magnitude/radius;
damage*=damage;
とかか?
0454名前は開発中のものです。2014/08/30(土) 11:32:20.24ID:TXvo3xTj
ああ、すまない、それだとダメージ1以下しか行かないから最後の行は
damage=damage*damage*Power;
とかかな。
0455名前は開発中のものです。2014/08/30(土) 11:36:36.76ID:4G5OHezK
2DのRPG作ってるけどUnityにそれに特化したサポート機能はないね
GUIは標準でも搭載されてるけど、ウインドウごちゃごちゃ出し消しするのにはあんまり向いてないから
NGUIって有料アセット使ってる
0456名前は開発中のものです。2014/08/30(土) 13:04:39.07ID:WPuubHYI
4.6ベータ版に、uGUiっていう、機能があっでnGuIみたいなことができるようになってる。

でも、あれをwebplayerで、ビルドすると、他人は遊べないという趣旨のメッセージが出るんですが、じっさいどうなんでしょう。
exeで出力すれば問題はないのでしょうか…
0457名前は開発中のものです。2014/08/30(土) 13:38:35.31ID:Obvt4QwM
>>456
アセットをかえば問題無いですよ
0458名前は開発中のものです。2014/08/30(土) 13:55:25.61ID:zirRIDIQ
inputManagerのkeyをC#から押した事にしたいんだけど出来ないのでしょうか?

input.GetKeyDownはあるけど、反対のSetKeyDown的な事がしたいのですがどなたかわかる方いませんか
0459名前は開発中のものです。2014/08/30(土) 14:11:26.57ID:+etliCX6
すみません
自己解決しました
0460名前は開発中のものです。2014/08/30(土) 14:25:06.57ID:Obvt4QwM
>>458
アセットを買えばできると思いますよ
0461名前は開発中のものです。2014/08/30(土) 14:27:59.79ID:WPuubHYI
>>458
Horizontalを押したらx変数に、
x変数に代入された定数に基づいて、キャラクターを移動させる。
ボタンを押したことにしたいなら、x変数に、スクリプトから自分で値を代入させればいい
0462名前は開発中のものです。2014/08/30(土) 14:45:34.89ID:tcnq/ywW
>>458
自分でInputManagerをラップしたクラスを作る
あらゆる値は自前のラップクラスから得る
そうすることでフレーム毎の入力をインプットデバイス以外から指定可能になる

この手の事はReplay系でも使われる、なおReplayでやるには移動制御で使うTime.deltaTimeも同じようにしないと駄目
0463名前は開発中のものです。2014/08/30(土) 15:12:08.40ID:Obvt4QwM
>>458
アセトをかえば面倒なスクリプトは要りませんよ、勉強も不要で簡単にできます
0464名前は開発中のものです。2014/08/30(土) 15:28:34.44ID:kuzb9s49
unityでもっとアニメーションを作りやすくするassetって無いですか?
0465名前は開発中のものです。2014/08/30(土) 15:55:46.40ID:tcnq/ywW
>>464
それは普通の3Dモデラー使えば良いじゃんか
2D?
しらんがな
0466名前は開発中のものです。2014/08/30(土) 16:20:50.03ID:qCuf0hVh
2DならSpriteStudioかSpriterかね?
0467名前は開発中のものです。2014/08/30(土) 16:32:58.89ID:/UYAHKWQ
インストールしてみたんだが
電子メールのアドレス確認をするConfirmation instructionsってメールが送られて来て
これがプレーンテキストで下のボタンを押せって書いてあるけどボタン無いからUnityが使えない。
これは英語かなんかでsupport@unity3d.comに言うしかないんでしょうか。
それとも出来ないのは私だけでほかの方は下記で送られてくる確認メールで確認作業ができるのでしょうか。
https://accounts.unity3d.com/confirmation/resend
0468名前は開発中のものです。2014/08/30(土) 16:45:04.14ID:kuzb9s49
>>465
blenderとか使ってたんですけど
自分の環境だと何故かポーズの変更が出来ないのでunityの標準機能使って
やってみましたが非常に使いつらくて困ってます

あともうひとつ質問です
unityのC#でアクションゲームを作る場合
ダメージ処理はC#のイベントとおい機能を利用して実装するのが一般的なんでしょうか
0469名前は開発中のものです。2014/08/30(土) 16:45:31.85ID:A4BLD5jM
>>467

メール漁ったらこんなレイアウトでボタンは画像だったからメーカー設定がテキストのみとでもなってんじゃない

ーーーーーーーーーーー
Welcome〜
〜the link below:

[こんふぉーむボタン]

Confirm my account


The Unity Team
0470名前は開発中のものです。2014/08/30(土) 16:49:19.09ID:Obvt4QwM
>>468
アセットをかえばいいと思いますよ
0471名前は開発中のものです。2014/08/30(土) 16:49:26.46ID:jCHy7CjD
>>467
英語だと「Resend confirmationm」
日本語だと「認証メールの再送」ってボタンが出るけど?
ブラウザ or メーラーを、変えるか設定を見るとかしてみて。
0472名前は開発中のものです。2014/08/30(土) 18:20:19.79ID:/UYAHKWQ
ありがとうございます。
色を付けるなどのHTMLメールは受け取れるけど、なぜかこの認証メールのが消えてしまうメーラーだったみたい。
無事メールアドレスの認証ができました。
0473名前は開発中のものです。2014/08/30(土) 18:29:47.23ID:RXtR61Xg
>>468
一般的ではないですがゲームモデルは自分がやりやすい方法で実装して構いません
0474名前は開発中のものです。2014/08/30(土) 19:45:27.77ID:6tj+xk6N
>>451
返信が遅れしまってすみません。
トリガーを使うというのはコライダーをもう一つ付けるという事でしょうか?
それともDetonator側でコライダーを生成するスクリプトを加えるのでしょうか?本当に知識の乏しい初心者で申し訳ないです。



>>453
返信が送れてすみません。
おっしゃる通りDetonetorがForceを加えている方法で同時にダメージをSendMessageで接触した敵に送りたかったんです。

SendMessageを書き換える方法で一度やってみようと思います。

分かりにく質問なのに、丁寧にお答え頂いてありがとうございます。
0475名前は開発中のものです。2014/08/30(土) 19:54:46.14ID:/UYAHKWQ
Unityってよくできてると思うが3Dって難しいな
http://japan.unity3d.com/developer/document/tutorial/my-first-unity/01.html
ここ見ながらやってみたが
最初下記が表示されていなかったりして操作性に戸惑う
http://japan.unity3d.com/developer/document/tutorial/my-first-unity/img/01/fig06.png
XZ軸に配置するのも戸惑った

Main Cameraを良い感じになるように移動しろとあるけど
カメラが遠くにあっても近くにあっても被写体の見かけの大きさが変わらないんだけどどうなってんの?
http://ookami.qweexz.jp/temp/un20140830/un001.jpg
0476名前は開発中のものです。2014/08/30(土) 19:55:32.68ID:0TdY9JE6
基礎の参考書初めからやったほうがいい
0477名前は開発中のものです。2014/08/30(土) 20:09:46.07ID:RXtR61Xg
>>474
お察しの通り、1つのゲームオブジェクトにコライダーコンポーネントを2つくっつけることはできないので

・空オブジェクトにトリガーをアタッチしたオブジェクトを生成して砲弾の子オブジェクトとして設定する

もしくは

・爆発した時点でトリガーをアタッチしたプレファブをインスタンス化する
(インスタンス化したプレファブは当たり判定が無くなったタイミングで自らDestroyさせる)


で、トリガー範囲内のキャラクターにSendMessageすればいいかと
0478名前は開発中のものです。2014/08/30(土) 20:10:10.38ID:/UYAHKWQ
後日書籍探しに出かけることにします
0479名前は開発中のものです。2014/08/30(土) 21:19:53.56ID:6tj+xk6N
>>477
なるほど、空オブジェクトにコライダーをアタッチすれば、Detonatorのスクリプトを弄らずに行けそうですね。

前者の子オブジェクトの方法だと、爆発前でもトリガー範囲内にSendMessageされますよね?(違ってたらすいません)
出来たら爆発の間だけダメージを与えたいので、プレファブ化してInstantiateで呼び出す方向でやってみます。本当に勉強になります。

ありがとうございます。
0480名前は開発中のものです。2014/08/30(土) 21:30:58.17ID:RXtR61Xg
>>479
砲弾自体がヒットした場合、必然的に砲弾のダメージと爆発のダメージが両方入るので
どちらかが入った時点でダメージを受付けないようにするか、二重ダメージを許容するか
仕様は自分で定めてください
0481名前は開発中のものです。2014/08/30(土) 21:39:46.54ID:/UYAHKWQ
>>444
ブラウザのJavaScriptだと条件式はbooleanでtrueかfalseになるけど
これを計算に使うと暗黙の型変換でtrueが1にされるみたいだね。
でもunityのJavaScriptだとint * booleanがエラーになるね。

var num : int = 100 + ((abc == 0)?2:0) - ((abc >= 2)?5:0);
これで動いたけど
abc = "0"
だった場合は(abc == 0)がtrueで、(abc >= 2)がエラーだった。

正式な仕様は知りません
0482名前は開発中のものです。2014/08/30(土) 21:40:25.75ID:oPadNVwe
playmakerを買ったのはいいんだけど使い方がよく分からない
適当に調べてチュートリアルとかも一通り目を通したけどちんぷんかんぷん
マウスクリックで色が変わる、離すと元に戻るとかは出来たが
キーボードの指定されたキーを押したら特定の状態に遷移とかの仕方がまったく分からん
0483名前は開発中のものです。2014/08/30(土) 21:45:01.38ID:Obvt4QwM
>>482
違うアセットをかえばいいと思いますよ
0484名前は開発中のものです。2014/08/30(土) 21:53:32.10ID:UCkopV/m
普通に歩いている途中で、下半身は歩きモーションを続けたまま、
上半身は銃を構えたい場合などはどうすればよいでしょうか?
調べたら、DirectXだかの場合のやり方はどこかに書いてあったのですが・・・・
どうしたら良いかどなたかご教授ください・・・
0485名前は開発中のものです。2014/08/30(土) 22:32:12.83ID:6tj+xk6N
>>480
なるほど、確かに砲弾と爆発の両方でSendMessageすると両方のダメージ食らっちゃいますね。
今回は爆発の方でだけダメージを与える様にします。

丁寧に説明して頂いてありがとうございます。面白いゲームになる様にがんばります!!



>>453

教えて頂いたやり方でやろうとしたのですが、当方、Javascriptで書いている為SendMessageの処理がうまく行かず、断念してしまいました。
もっと勉強して教えて頂いたやり方でも処理出来る様にします。

お二方とも本当にありがとうございます。
0486名前は開発中のものです。2014/08/30(土) 22:33:59.20ID:TXvo3xTj
>>484
ある程度それにあったデータである必要はあるが
mecanimでレイヤーを使う。
この辺
ttp://docs-jp.unity3d.com/Documentation/Manual/AnimationLayers.html
0487名前は開発中のものです。2014/08/30(土) 22:59:59.76ID:UCkopV/m
>>486
ありがとうございます!
この方法を試させて貰います!
0488名前は開発中のものです。2014/08/31(日) 00:27:48.43ID:/mg3niUK
>>475
遠近法が適用されてないな、透視投影法だっけ?
にすれば、おk
0489名前は開発中のものです。2014/08/31(日) 01:44:11.01ID:lxG2AtuY
>>462
>>461
ありがとうございます!

ラップっていうのは、こういう事でしょうか?
http://answers.unity3d.com/questions/136342/how-to-set-input-buttons.html
混乱して来た…

あるアセットがinput.getkeydownを監視しているんですが、それをモバイル対応させたくて、touchと組み合わせてスクリプトからinput.getkeydownを押した事に見せかけたいんですけどラップすればそれが出来ますか?
0490名前は開発中のものです。2014/08/31(日) 01:52:23.18ID:PDJTd6s+
>>489
アセットをかえばできますよ
0491名前は開発中のものです。2014/08/31(日) 02:07:59.57ID:UVuLUCZY
アセットのデモシーンだとしっかり動くけど
新しく作ったシーンに丸ごとコピペしても正常に動かないのはなぜなんだ…
0492名前は開発中のものです。2014/08/31(日) 02:34:43.31ID:h2V5ktdn
>>489
Input.GetKeyDownとかはStaticFunctionだからそれを隠蔽するのは無理。
アセットのコードにアクセスできるならそれを書き換えちゃえば?
0493名前は開発中のものです。2014/08/31(日) 04:31:10.65ID:/mg3niUK
秋葉原モデルを、何度アセットストアからダウンロードしても、
道路のテクスチャが表示されずに真っピンクに…

4.6ベータなのがイケないのかな?
0494名前は開発中のものです。2014/08/31(日) 13:41:02.17ID:5Pkl5tCm
>>493
アセットは買わなきゃダメです
アセットは買いましょう
0495名前は開発中のものです。2014/08/31(日) 19:27:59.41ID:F4IBa814
>>493
テクスチャがピンクになるのは大概シェーダーの問題だ
適当に変えてみよう?
0496名前は開発中のものです。2014/08/31(日) 22:32:29.31ID:fJZzFWiX
アセットストアが非常に重くフリーズします。
Windows7 i7 2600K メモリー16G
Unity Version 4.5.3


普段はブラウザ上で購入しているのですが、UnityのAsset Storeを開くと
Unityが10分ほどフリーズし、操作が行えない状態です。
何か解決方法はありますか?
0497名前は開発中のものです。2014/08/31(日) 22:49:29.40ID:cnXCu85V
あります
0498名前は開発中のものです。2014/08/31(日) 23:25:50.35ID:5Pkl5tCm
>>496
アセットをかえば軽くなるんじゃないでしょうか
0499名前は開発中のものです。2014/08/31(日) 23:36:51.46ID:lxG2AtuY
>>492
ありがとうございます
アセット側を弄ってみることにします
0500名前は開発中のものです。2014/09/01(月) 00:07:05.95ID:BLyG/4d5
>>499
ラップってのはある機能を自前のクラスで等価に扱いながら自分の望む事をするために特殊化する事を意味する
Unity標準のInputと同一メソッドを持たせてやれば呼び出しコストが少しかさむが同じ機能を提供できることは理解できるとおもう
たとえばInput クラスのbool GetButton(string key)だけを模倣するなら
class MyInputClass {
static bool GetInput(string key) {
return Input.GetInput(key);
}
}
こうなる、ここでMyInpuClassのGetInputに外からの情報に基づいた追加機能を使うように修正すれば初回の質問の答えになる。
たとえば
class MyInputClass {
static bool _forcePressFire1;
static bool GetInput(string key) {
if(key=="Fire1")
return _forcePresFire1;
return Input.GetInput(key);
}

このようにする事でMyInputClass.GetInutは"Fire1"引数に対してクラス変数_foresPressFire1がtrueなら実際の入力に依存せずに任意の値を返せる。

>>492
がstatic Functionだから隠蔽するのは無理って言っているのはラップを継承で片付けようとする誤解から来てる。

これ読んでも理解できないならC#言語の解説とGoFの書籍読むべき
0501名前は開発中のものです。2014/09/01(月) 00:39:15.61ID:toS6w3xL
Unityで作成したゲームからiphoneのカメラロールにアクセス(若しくは写真を撮影)して、そこから取得した画像をテクスチャとしてゲーム内で適用させる方法ってありますか?
0502名前は開発中のものです。2014/09/01(月) 00:40:53.90ID:dV6bM/SP
今、生物の増殖プログラム作ってるんですが
つまづいているところがあるので質問させてください!
隣の空き地に自分の複製を作るスクリプトです。
(オブジェクト同士の距離をある程度離したいためAの処理を入れてます)

@自分から半径1の円周上に自分のコピー(オブジェクト)を生成
Aコピーを生成する際、その座標が他のオブジェクトの半径1の円の中にあるとき、生成を中断して1に戻る
B生成できる場所がなければ処理を終了

@の処理はできたのですが
AとBの処理はどうスクリプトを書けばいいのか分かりません。
わかる方教えてください!JSでお願いします
0503名前は開発中のものです。2014/09/01(月) 00:41:56.35ID:tiyIU5+B
>>500
やば

つまりtouchしたら_forcePressFire1をtrueしてやればそのままスマホ対応出来るわコントローラ対応も出来るわで一石二鳥なわけですね!

ちょっとGoFとやらも読んでみます。

神様ありがとう!
0504名前は開発中のものです。2014/09/01(月) 03:51:17.47ID:DvHOmP6g
>>502
JSでってコピペすれば動くコードよこせって話なのかw

アルゴリズム的には自分から半径1のどこかに起点とって衝突判定、
衝突がなければ生成。
衝突があればその衝突したオブジェクトの一番遠い方から半径1と自分から半径1の円の交点求めて得られた2点と
起点を自分中心に60度回転させた点の三つの中で一番起点から遠い点を新たな起点にして
その新しい起点と最初の起点の距離が1未満になることを終了条件にして再帰的に探索繰り返せばよさそうかとは思うが。

衝突判定アルゴリズムは超めんどくさくても全部自分で書くか
そうでなければColliderつけてPhysicsなりPhysics2Dなりでやるか、
ってあたりだろうな〜。

でも3次元だともうかなりめんどくさくなりそう。
あと衝突対象が円とかじゃなくて壁とかそういうのがあったりするとかなりアレかも。

まぁいずれにせよJSは書かないからよくわからんw
あと基本的にUnityの話じゃないよなこれw
0505名前は開発中のものです。2014/09/01(月) 07:12:36.48ID:1GR867jd
質問させて下さい。
2DのターンベースのシミュレーションRPGを作りたいのですが、Unityは適切ですか?
3Dエンジンと紹介されていたので、どんなものかと考えています。
できれば、タクティクスオウガみたいな、斜め上から見下ろした感じでさらにHexのシミュレーションRPGにしたいです。
よろしくお願いいたします。
0506名前は開発中のものです。2014/09/01(月) 07:51:10.56ID:cMTpsGvM
>>505
2Dのゲームも現在は作れるようになっています。
ターン製は作ったことが無いので分かりませんが・・・
0507名前は開発中のものです。2014/09/01(月) 08:41:50.74ID:cMEn6HU+
GameMaker使っとけ
0508名前は開発中のものです。2014/09/01(月) 09:42:07.59ID:PCyZ6y3q
>>501
ネイティブで書くかアセットを買うか、好きなのをどうぞ。
フォトアルバムにアクセスしてるunityアプリも実際にある。
0509名前は開発中のものです。2014/09/01(月) 14:09:38.18ID:HaCpLbgB
>>505
アセトをかえばできますよ
0510名前は開発中のものです。2014/09/01(月) 14:29:34.39ID:FxtfUF2A
今ネットワークの勉強をしてるんですけど質問があります
http://docs.unity3d.com/ScriptReference/Network.TestConnection.html
このunity公式のサンプルなんですけどこの中のTestConnection()はOnGUI()の中で呼び出されててテストが終わるまで
ループして何度も呼び出されるという風になってると思います
それでTestConnection()の中の3行目で
connectionTestResult = Network.TestConnection();・・@
とconnectionTestResultに代入されています
わからないのはその後なんですけど connectionTestResultの結果で枝分かれした
case ConnectionTesterStatus.PublicIPPortBlocked:
の中の7行目で
connectionTestResult = Network.TestConnectionNAT();・・A
とまたconnectionTestResultに代入してますよね?
ここでconnectionTestResultに代入しても次のフレームではまた@で代入されてしまうわけだから
Aの代入は消えてしまうんじゃないでしょうか?
Aの代入した結果はどこへ行ってしまうのでしょうか?
0511名前は開発中のものです。2014/09/01(月) 15:11:21.81ID:HaCpLbgB
>>510
アセットをかえばわかりますよ
0512名前は開発中のものです。2014/09/01(月) 16:04:08.18ID:POAmqZGW
>>510
このスレで真面目に聞いてもわかんない奴ばっかだから意味ないよ
参考書みたいなの買うとかした方がいい
0513名前は開発中のものです。2014/09/01(月) 16:11:41.09ID:SmgKT/8p
まず読む気が起きない
0514名前は開発中のものです。2014/09/01(月) 16:15:19.73ID:pGf+Aihs
わかんない奴>>510
でも>>510みたいに煽りを入れておくと返答率よくなるのは確か
0515名前は開発中のものです。2014/09/01(月) 16:16:47.78ID:pGf+Aihs
おっと
>>510 → >>512
0516名前は開発中のものです。2014/09/01(月) 16:44:23.62ID:8MnlaxC9
見下ろし型シミュレーションRPGなら3Dの方がいいんじゃない
2Dグラフィック用意するのクソめんどいよあれ
0517名前は開発中のものです。2014/09/01(月) 17:18:56.41ID:PCyZ6y3q
そういやもうすぐファントムオブキルってスマホSRPGが出るんだっけか、あれはunity製なんかな。
0518名前は開発中のものです。2014/09/01(月) 17:37:51.82ID:FxtfUF2A
ちょっと文面が長くてわかりにくくてまずかったかなぁ
よく考えてシェイプアップさせたつもりだったのだが
0519名前は開発中のものです。2014/09/01(月) 17:42:32.57ID:2g5VkOwA
要件は先にもってくるとわかりやすい
0520名前は開発中のものです。2014/09/01(月) 18:36:58.11ID:phuRIGMR
>>510
ちゃんと見てないがその関数は単に返り値を返すだけじゃなくて
サーバー側と通信してるっぽいからサーバー側の反応見るためにそこで打ってるんじゃないの?
0521名前は開発中のものです。2014/09/01(月) 19:14:28.40ID:qsDLovS+
以前、>>450で質問した者です。
結局、>>451さんのコライダーを使うというアドバイスで今日スクリプトを書いてみたのですが、
思った様にEnemyにSendMessageで来ません。やりたい事は砲弾に設定したダメージを爆発時に生成した
IsTriggerをオンにしたコライダーに変数blastでSendMessageで送り、コライダー側の変数damageに代入。
その後EnemyにSendMessageでdamageを送るという手法を使っているのですが、砲弾からコライダへは変数を
送れているのですが、SendMessage ApplyDamage has no receiver!
UnityEngine.GameObject:SendMessage(String, Object)というエラーが出ます。因に、他の弾丸でSendMessageでdamageを
送ったときも同じエラーは出る物の、damageはきっちり送られています。
0522名前は開発中のものです。2014/09/01(月) 19:16:21.76ID:qsDLovS+
>>521の爆発用のコライダーのスクリプトです。

#pragma strict

private var damage : float;

function Blast(blast : float)
{
damage = blast; //ここまでは数値は送られています。
}

function OnTriggerEnter(col : Collider)
{
if(col.tag == "Enemy")
{
col.gameObject.SendMessage("ApplyDamage",damage);
}
}
function Update()
{
Destroy(gameObject,3);
}

何処がおかしいのでしょうか?
0523名前は開発中のものです。2014/09/01(月) 20:58:05.13ID:qsDLovS+
連稿すみません。エラーメッセージの方は単にSendMessageOptions.DontRequireReceverを入れてなかったからでした。

しかし、やはり爆発の方のdamageはEnemyに送られていない様です。どなたかご教示願います。
0524名前は開発中のものです。2014/09/01(月) 21:02:44.19ID:HUU9GCmK
DestroyをUpdateに入れるな
0525名前は開発中のものです。2014/09/01(月) 21:13:28.34ID:HaCpLbgB
>>522
これは、アセットをかったほうがいいですね
0526名前は開発中のものです。2014/09/01(月) 21:14:57.40ID:qsDLovS+
>>524
OnTriggetEnter内に入れると、消去されずに残ってしまったので仕方なく外に出してUpdateで呼んでるんでが?マズいですか?

ダメージはどちらにしろEnemy側に送られてないです。因にSendMessageの部分はダメージを送れる方の弾丸と同じ内容です。
0527名前は開発中のものです。2014/09/01(月) 21:17:52.28ID:jxSAtt3p
>>501
Facebookとマルチしてんじゃねぇよ
向こうで指摘されてるが検索で一発じゃねえか
0528名前は開発中のものです。2014/09/01(月) 22:07:19.46ID:19bEyZS/
OnTriggerEnterに入れたDestroyが機能しないのに同じ場所に入れてるSendMessageが機能するはずがないわな
0529名前は開発中のものです。2014/09/01(月) 22:13:58.12ID:qsDLovS+
>>528
説明が不十分でしたね。OnTriggerEnterに入れると衝突判定が無いと消えないですよね?戦艦で戦う系なので、
標準アセットのwalterをつかっているのですが、うまく衝突判定が取れずに消えない事もあるという事です。全が消えない訳ではないです。
Awakeで読んでlifeTimeで管理でも良いんですが、そこはどうにでもなるので姑息策で外に出しているんで、OnTriggerEnter自体は機能しています。
OnTriggerEnter内で処理していたときもEnemyに当たっていた分は消えていたので。
0530名前は開発中のものです。2014/09/01(月) 23:09:33.75ID:ymmddkqZ
コライダーがあってもOnCollision系, OnTrigger系が動かない組み合わせもあるようだが
ttps://code.google.com/p/vga-unity/wiki/GP10UnityCourse08
ttp://raharu0425.hatenablog.com/entry/2014/01/17/164919
0531名前は開発中のものです。2014/09/02(火) 02:01:16.02ID:l6NrJpA9
>>477
1つのGameObjectにColliderコンポーネント複数取り付けられる気がするんだけど
これって正しくない挙動するからやめろって事??
0532名前は開発中のものです。2014/09/02(火) 03:13:59.10ID:ALgug/FZ
>>529
ただ聞いてる分には
・衝突判定はできている
・しかしセンドメッセージは効いていない
=センドメッセージとそれを受ける関数の書き方がおかしい

としか思えんのだがw
0533名前は開発中のものです。2014/09/02(火) 04:48:15.82ID:EsmMb8P/
>>530
コライダーは爆発側には一つしか付いてないんですよ。受ける側はOnCollisionEnterとOnTriggerEnterで二種類の関数からSendmessageを送っているのでその辺りですかね?


>>532
そうですよね?何度もそう思って、見直した上にdamageを送れている方の弾丸からcol.gameObject.SendMessage("ApplyDamage",damage); の部分を
コピペしてやってもうまく行かないんですよ。

当たり判定があった時にDebug.Logでdamageと出力させる様にしても、DebugLog自体は出力されるのでやはり衝突判定は取れている様です。
0534名前は開発中のものです。2014/09/02(火) 05:41:46.68ID:ALgug/FZ
>>533
実は同じようなミサイルの爆発でダメージ、ことをしていて俺の場合はコリダー二つつけて片方は
実弾としての当たり判定、片方はトリガーにして範囲判定にしているんだが
別に出来てるんだよな〜。
やり方的には実弾側が当たったらOnCollisionEnterでセンドメッセージでダメージ、そのコリダーはディゼーブルにして
トリガー側をイネーブルにして同じくOnTriggerEnterでセンドメッセージでダメージ。

まぁちょっと気になっているのが爆発が起きた時爆発のパーティクルが広がるより前にダメージが渡ってしまうので
コンポーネントをイネーブルにするというラグが不規則に起きそうな処理よりデトネイター型の処理にした方がコントローラブルそうな気がして
そっちに書き換えようかな〜とかは思っているのだけど。
0535名前は開発中のものです。2014/09/02(火) 06:00:54.66ID:EsmMb8P/
>>534
コライダー二つでも処理出来てるんですね?聴いた所ほぼ同じ処理だと思うのですが、こちらは砲弾自体でのダメージはなく、
砲弾側で設定したダメージを着弾時に生成したコライダ付きの空オブジェクトに送り、それをOnTriggerEnterで衝突した敵に送る。
という、若干回りくどい方法をとっています。

先ほど、DeBug.Logで確認してみた所爆発のdamage自体はちゃんとEnemyに送られているようです。
只、爆発の方だけ hp -= damageが実行されていない様です。しかしもう一方の弾丸の方のdamageは
きっちりと計算されています。もう何が何だか。

恐らくデトネーター型の方がスマートなやり方なんでしょうね?もっと勉強せねば。
0536名前は開発中のものです。2014/09/02(火) 07:50:27.10ID:1GMwZIBc
>>535
そのとっちらかったダメージ処理を見直すべき。
処理のタイミングずれて問題が出てる訳だから、今のままだと今後もトラブルと思うけど。
0537名前は開発中のものです。2014/09/02(火) 07:57:19.23ID:FFsdmZrU
>>535
アセトをかえば簡単ですよ
0538名前は開発中のものです。2014/09/02(火) 12:02:00.52ID:av9lwgyz
プレハブを使う利点って、
同じ内容のオブジェクトを
簡単に複製できるというだけですか?

プログラム上で同じ設定を付与できれば、
プレハブ使うメリットはないのでしょうか。

それとも、プレハブにしたほうが
ロードが早いとかありますか?
0539名前は開発中のものです。2014/09/02(火) 12:06:45.32ID:ALgug/FZ
そりゃコンポーネントを付加したりヒエラルキーを組んだりっていう
操作がなくなってロードすりゃいい状態なんだからその分早くはなるだろう。

あとシリアライズされたデータを保持しておけるというのもある。
基本的にはスクリプトで全部出来るからまさに時間とメモリのトレードオフの問題ではあろうね
0540名前は開発中のものです。2014/09/02(火) 14:54:55.88ID:uzHWIoAm
>>538
アセットをかえば早くなりますよ(ガチで
0541名前は開発中のものです。2014/09/02(火) 15:03:42.89ID:/QVIXs5T
>>538
プレファブの語源をもう一度かみしめると良いかもしれない。
コードで全部行う事で同じ事は確かにできるのだけど、プレファブの本質はソコじゃ無い。
ResourcesクラスやAssetBundleクラスから生成可能なのがミソなのだ。
そしてそれらはシーンに配置したGameObjectの参照からインスタンス化するのと同様に生成できる。

乱暴に言えばプレファブからのインスタンス化を理解して使えばダウンロードコンテンツからでも今のゲームシーンに任意のゲームオブジェクトを生成できるって事。
0542名前は開発中のものです。2014/09/02(火) 17:08:46.32ID:ElI5Z03+
nGUIは皆買ってんの?
フリー版使ってる人のが多いんだろか
0543名前は開発中のものです。2014/09/02(火) 17:36:20.62ID:RDa7aV1G
>>481
今更ですけど返信ありがとうございます!条件演算子というらしいですね
こちらだと特にエラーは起こらなかったのでそのまま使ってしまおうと思います
0544名前は開発中のものです。2014/09/02(火) 18:52:57.80ID:EsmMb8P/
>>536
返信が遅れてすみません。

おっしゃる様にダメージ処理がとっ散らかっていたので、結局、爆発の方のスクリプトから直にdamageの値を送る事で
解決しました。爆発のスクリプトを他の武器でも流用出来る様にと思ってやった事ですが、もう少し理解してからしないとダメですね。


教えて頂いた皆さんありがとうございます。

今は無駄に自作のガトリングガンを作って遊んでますw完成は遠いですww
0545名前は開発中のものです。2014/09/02(火) 19:30:01.55ID:PrWBRdRO
質問失礼します。

現在テクスチャーの貼られたマテリアルをゲームオブジェクトに貼って画面に表示しています。

この手法だとゲームオブジェクトを2万ほど表示するとFPSが落ち始めます。

もっと早くテクスチャーを画面に表示したいのですが、何か良い方法は無いでしょうか?

分かる方、よろしくお願いします。
0546名前は開発中のものです。2014/09/02(火) 20:37:39.57ID:RQcEJ2j6
>>542
みんなって意味じゃdfと分かれるだろうしplaymakerの方が一応持ってる率高いんでない
0547名前は開発中のものです。2014/09/02(火) 23:37:28.24ID:FxtyDUWZ
お願いします。
アセットストアで購入した街の3Dモデルのdemosenseを元に1面を作成しています。
しかし元のdemosenseデータも必要になり再インポートしようとしてもできません。

一度1面を他のフォルダに移動するとdemosenseを再インポート出来ましたが
1面を元のフォルダに戻し開くとdemosenseと同じ画面が開きます。

1面はそのまま
大元のdemosenseデータを利用して2面、3面と作成することはできないのでしょうか。

わかりにくい説明ですみません。
0548名前は開発中のものです。2014/09/02(火) 23:41:10.92ID:V7hxBCio
>>504
ありがとう!
なんか面倒なことになりそうだから
べつの方法をかんがえてみるよ
0549名前は開発中のものです。2014/09/03(水) 02:25:57.65ID:jgviRdhI
WWWを利用したサンプルがあるサイトをご存じの方がいたら教えて下さい。
0550名前は開発中のものです。2014/09/03(水) 08:01:08.56ID:VzOT53gO
>>547
やりたいことがちとわからんが
1:Demo.sceneをインポート、これを修正して自分の面を作ってリネーム
2:元のDemo.sceneが必要になったので再インポート
3:自分の作った別名のシーンがおきかわって困る
こういうこと?
もし上の状態で困っているなら
1の部分を
1-0:
1-1:Demo.sceneをインポートしロードする
1-2:ヒエラルキーで全選択してCopyする
1-3:New Sceneでまっさらなシーンを作る
1-4:ペーストしてから任意の名前で保存
で元のdemo.sceneから自分の管理下に置き換えられる
0551名前は開発中のものです。2014/09/03(水) 09:48:58.85ID:NBJfJDUx
>>547
それは、アセットをかえばできると思うけど
■ このスレッドは過去ログ倉庫に格納されています