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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
0848名前は開発中のものです。2014/09/15(月) 03:09:15.84ID:C4B8ddE8
ヒヨコの絵が表紙の「Unity4入門」という本を参考にしているのですが

var style : GUIStyle;

と宣言した後に

style.fontSize=40;

とフォントサイズを指定してみたのですが

「NullReferenceException: Object reference not set to an instance of an object
DeathCounter.Start ()

といったエラーが出てしまいます。
一応エラーをググってみましたが問題解決に至りませんでした。

こちらのサンプルファイルのChapter5のDeathCounter.jsです。
どなたかお願いします。
ttp://www.sbcr.jp/support/11310.html
0849名前は開発中のものです。2014/09/15(月) 03:47:07.67ID:Zz1HLPwN
Unity のコンソールを見る。
エラーが起きてる行載ってるからそこらへん見てみる。

ひよこは本の通り完璧に写してもエラーが起きる箇所が2,3箇所あったよ。
どんなググり方してんのか知らないけど、
ただ単にエラーをググるんじゃなくて、翻訳してみたり、
Nullって何ってとこ理解してかないと。

先に、javascriptかC#なりの基礎押さえておいた方がいいと思うよ。
スクリプトなしを謳ってるけど、結局必須だから。
0850名前は開発中のものです。2014/09/15(月) 03:49:10.57ID:y6aS4cvJ
嗚呼、世界はこんなにも綺麗だったのだと
あなたたちも気付くはずです
もったいないですからね
0851名前は開発中のものです。2014/09/15(月) 05:51:59.70ID:EP9YCgfl
count += Time.deltaTimeで1秒経ったら値を1ずつ増やしてテキストに描画って実行したんだけど
ストップウォッチで計ったら1分で1秒のズレが生じたんだけど、これってどういう事??
UnityのTime.deltaTimeがストップウォッチよりだんだん遅れてカウントされるようになる…

count += Time.deltaTime;
if(count >= 1.0f){
     totalpower += power;
     count = 0;
}

これ間違ってますか?どうしたら完璧な1秒毎に処理を実行できるようになりますかね…
0852名前は開発中のものです。2014/09/15(月) 06:32:16.89ID:KxXTM8Bz
>>851
アセットをかえばできますよ
0853名前は開発中のものです。2014/09/15(月) 07:23:04.14ID:joHIQ9ry
>>851
totalpower += powerが1秒カウントってことかな
だったら「count = 0」はまずいよね

count += Time.deltaTime;
if(count >= 1.0f){
     totalpower += power;
     count -= 1.0f;
}
だな

そもそも、
count += Time.deltaTime;
で、
(int)(count)が秒数を表す整数になるんじゃない?
どの道、誤差は最大で1フレーム分出てしまうけど
0854名前は開発中のものです。2014/09/15(月) 09:59:24.88ID:y6aS4cvJ
間違いありませんって
0855名前は開発中のものです。2014/09/15(月) 11:00:15.19ID:hFevD6QE
UnityでLeap motion+Oculusめちゃおもすれぇ

でもこんなニッチなの売れる訳が無いorz
0856名前は開発中のものです。2014/09/15(月) 13:54:57.60ID:EP9YCgfl
>>853
Time.deltaTimeで加算し続けると1.0以上の値が出て、count=0にしたら1以上の値消してるからかー
うわー考えてみれば当たり前の事だった恥ずかしい。本当ありがとう

ちなみにtotalpower += powerは簡略化してて実際にはちょっと計算式書いてます
なのでcount変数はただ時間経過に使ってるだけですー
0857名前は開発中のものです。2014/09/15(月) 14:22:23.65ID:y6aS4cvJ
だいたい45歳くらいの設定です
0858名前は開発中のものです。2014/09/15(月) 17:02:02.33ID:cjp3gX9h
>>847
解決した
ありがとう
ちなみに俺が参考にしたページは英語のサイトだったからそのページではないな
そのページにあるリンク先だったかもしれない
0859名前は開発中のものです。2014/09/15(月) 17:06:15.61ID:y6aS4cvJ
>>858
ほぼ同じシチュエーションでこう返答し、実行した
0860名前は開発中のものです。2014/09/15(月) 22:48:42.69ID:C4B8ddE8
>>849
無事解決しました。
精進します、ありがとうございました。
0861名前は開発中のものです。2014/09/15(月) 23:10:27.72ID:xyZh2GTA
質問失礼します。
NGUIを使ってゲームオブジェクトの直上にHPを表示する方法を

ttp://blog.be-style.jpn.com/article/58484121.html

の通りにやっていて、Label_Controller.jsを書き終えた所なのですが、エラーログに

The name 'UILabel' does not denote a valid type ('not found').

というメッセージが出て、且Labelにアサイン出来ません。

スクリプトの記述はサイト無いのスクリプトをコピペしても同じエラーが出ます。どなたか解る方教えて下さい。
0862名前は開発中のものです。2014/09/15(月) 23:30:22.24ID:2w7eR1oN
そのblogに質問すればいいやん
0863名前は開発中のものです。2014/09/15(月) 23:35:37.34ID:xyZh2GTA
>>862

そうですね。そうしてみます。こちらの方がレスポンスが速いかなと思った物で。こちらでも引き続き何が問題か解る方居られましたら、教えて下さい。
0864名前は開発中のものです。2014/09/16(火) 00:21:34.54ID:xuVTahtE
>>863
まぁ多分Blog主が答え返してくれると思うが
ttp://blog.be-style.jpn.com/article/54284031.html
のコメント欄とか
本家のフォーラムとか。
ttp://www.tasharen.com/forum/index.php?topic=1763.0
0865名前は開発中のものです。2014/09/16(火) 00:47:28.17ID:rQuytVCn
>>861
エラーメッセージはUILabelという型が無いといってる
NGUIはちゃんとインポートされてるの?
0866名前は開発中のものです。2014/09/16(火) 00:50:57.44ID:xuVTahtE
一応具体的に書いておくとNGUIをJSで使うときはNGUIのフォルダ構成を変更しないとダメ、ということ。
0867名前は開発中のものです。2014/09/16(火) 00:59:35.50ID:sI57oppG
>>865
そうですよね?型がないと言われてるんですが、UILabelはちゃんとそんざいするんですよ。

>>866
フォルダ構成というのは、UILabelをLabel_Controllerと同じフォルダに入れるという事でしょうか?英語が不得手ですみません。
0868名前は開発中のものです。2014/09/16(火) 01:05:28.66ID:xuVTahtE
>>867
プロジェクト直下にPlugins-NGUIとフォルダを掘って
NGUI-Scrpt下のInteraction,Internal,Tweening,UIの4つのフォルダを
その中に移動する。
公式のフォーラムに画像がある。
0869名前は開発中のものです。2014/09/16(火) 01:44:24.35ID:sI57oppG
>>868
プロジェクトビューにPlugins-NGUIというフォルダを作るという事でしょうか?公式のフォーラムは英語がダメな物で
何が何だか。

本当に素人ですみません。
0870名前は開発中のものです。2014/09/16(火) 01:50:38.39ID:xuVTahtE
>>869
いやフォルダを変更した画像あるからw
ttp://www.tasharen.com/forum/index.php?topic=1763.0
さすがに画像見てもわからんとかないだろw

あともとのブログ主の過去記事のコメ欄にも同じことが書いてある
ttp://blog.be-style.jpn.com/article/54284031.html#comment
これは日本語だから。
0871名前は開発中のものです。2014/09/16(火) 02:02:30.83ID:sI57oppG
>>870
本当に細かい所までありがとうございます。うまく行きました!ここの人達は本当に親切で助かります。
0872名前は開発中のものです。2014/09/16(火) 09:03:25.10ID:ISfSFelt
腕ボーンの子としてつけられたアイテムのワールド座標(絶対座標)での速度をとりたいと思うんですがどうすれば取れるのでしょうか?
RidgebodyがGetPointVelocityというメソッドを持っているみたいなのですが
これを使えば取れるのでしょうか
この場合引数は何を意味するのか教えていただけるとありがたいです。
0873名前は開発中のものです。2014/09/16(火) 11:06:31.12ID:xuVTahtE
>>872
全部が物理演算で動いているならとれるんじゃないか?
引数はワールド座標での位置だろ。
キャラクターをアニメーションで動かしてるとかだと多分無理。
自分で速度割り出しを実装するしかない。

まぁ前フレの位置と今の位置の差をとってTime.deltaTimeで割るだけだけどな。
0874名前は開発中のものです。2014/09/16(火) 11:42:10.11ID:rQuytVCn
>>872
Rigidbody.velocityプロパティでいい
Rigidbody.GetPointVelocityメソッドはポイントの速度を得るときに使うもので普通は使いません
0875名前は開発中のものです。2014/09/16(火) 13:08:56.74ID:cEC0r6Ej
>>873
腕の方にアニメーション使っていますね
速度の計算は
・毎月フレーム位置情報だけ取得しておき、速度の情報が必要になったときだけ
 保持しておいた位置情報を使って速度を算出するか
・毎フレーム速度を計算するか
悩み所ですね

アドバイスありがとうございました

>>874
velocityの値で取るとうまくいきませんでした
もしかしたらvelocityは実際の速さではなく
Ridgebodyに与えられたforceによって出た速度しか取得しないのかと
思ったのですがどうなのでしょう・・・
GetPointVelocityの情報ありがとうございました
0876名前は開発中のものです。2014/09/16(火) 13:27:11.23ID:PIdQj0Ea
>>875
アセっトをかえばできると思いますよ
0877名前は開発中のものです。2014/09/16(火) 15:07:57.38ID:w3Ayv2uN
質問失礼します。
外部のunitypackageファイルを動的に(実行ファイル実行中に)読み込む事は可能でしょうか?
unitypackageファイルのバイナリデータを解釈するやり方ではなく、
UnityEngineが用意したLoadUnityPackageみたいな関数があるのか?という質問です。
分かる方、よろしくお願いします。
0878名前は開発中のものです。2014/09/16(火) 15:34:50.16ID:PIdQj0Ea
>>877
アセット買うとどうにかなると思いますよ
0879名前は開発中のものです。2014/09/16(火) 15:49:05.41ID:SwAqzR2+
>>877
そういう端的な関数はない
0880名前は開発中のものです。2014/09/16(火) 16:39:44.27ID:yQwqIDCe
>>877
実行バイナリにはEditor機能は付かないから無い
AssetBundle作ってダウンロードコンテンツ扱いにする事で似たような事はできる。
0881名前は開発中のものです。2014/09/16(火) 17:04:48.48ID:w3Ayv2uN
>>878
>>879
>>880
返答ありがとうございます。
無理そうですね。というより、お作法的にありえないようですね。
ありがとうございましたー。
0882名前は開発中のものです。2014/09/16(火) 18:20:11.65ID:mqzn/qnA
アセットを買うと〜って書き込み
面白くもなんともないんだけどどうなの
0883名前は開発中のものです。2014/09/16(火) 18:23:44.09ID:eiZFzr+m
質問失礼します。
ドラッグでオブジェクトの移動をしていて、
オブジェクトを画面内に収めたいのですが

transform.position.x = Mathf.Clamp(transform.position.x,-3,3);
transform.position.y = Mathf.Clamp(transform.position.y,-5,6);


だとドラッグしている間、画面外に出てしまいます。
ドラッグしてる間でも画面外に出ないようにするにはどうしたらいいでしょうか。
どなたかお助けを・・・。
0884名前は開発中のものです。2014/09/16(火) 18:48:44.78ID:PIdQj0Ea
>>883
アセットをかえば解決しますよ
0885名前は開発中のものです。2014/09/16(火) 19:11:58.89ID:SwAqzR2+
>>883
Clampのminとmaxの値を画面外に出ない値に調整すれば良いんじゃないのか…
何を言ってるのかよくわからんレベルだ…。
0886名前は開発中のものです。2014/09/16(火) 19:22:06.51ID:JB9cJY9u
Androidで外部ファイル(オーディオとかテキストとか画像)にアクセスするにはどうすればいいですか?
誰か簡単でいいのでヒントください
0887名前は開発中のものです。2014/09/16(火) 19:27:43.88ID:3y1jbxQF
>>884
調子に乗るなクズ
0888名前は開発中のものです。2014/09/16(火) 19:28:51.03ID:yQwqIDCe
>>886
いっちゃん簡単なのはWWWクラスでhttp://やfile://なURLで読み込む、サンプルも結構転がってる
0889名前は開発中のものです。2014/09/16(火) 19:47:09.87ID:PIdQj0Ea
>>886
あせっとをかえばかいけつしますよ
0890名前は開発中のものです。2014/09/16(火) 20:05:11.78ID:eiZFzr+m
>>885
マウスボタンを離すと弾かれるように画面内に戻っては来るんですが、
ドラッグ中は画面から出てしまいます・・・。
0891名前は開発中のものです。2014/09/16(火) 20:09:43.15ID:gDOUZjim
オブジェクトのポジションじゃなくてマウスのポジションを制限するとか?
0892名前は開発中のものです。2014/09/16(火) 20:16:52.48ID:SwAqzR2+
>>890
そしたらドラッグ中の処理を書けよw
それ以外の部分のコード書かれても知らんわw
0893名前は開発中のものです。2014/09/16(火) 20:26:02.04ID:o1BDq6Rn
カメラで撮影した画像を保存し
アプリで使うにはどうしたらいいんでしょうか
0894名前は開発中のものです。2014/09/16(火) 20:56:36.75ID:eiZFzr+m
>>885
>>891
>>892

transform.position.x = Mathf.Clamp(transform.position.x,-3,3);
transform.position.y = Mathf.Clamp(transform.position.y,-5,6);
の書き込み場所を変えたら解決しました。
申し訳ないです。ありがとうございました。
0895名前は開発中のものです。2014/09/16(火) 22:53:07.89ID:PIdQj0Ea
>>893
アセットをかえばいいんではないでしょうか
0896名前は開発中のものです。2014/09/16(火) 23:17:12.74ID:0UBiUxq3
4.6のbuttonのonclickに他のオブジェに関連づけたスクリプトを追加しました。
引数が無い関数は問題ないのですが、引数がある自前の関数は
Missing ファイル名.関数
と出てしまい、クリックしても実行されません。
いくつかのファイルと関数を試したのですが同じでした。
何が原因なのでしょうか?
0897名前は開発中のものです。2014/09/16(火) 23:33:34.18ID:PIdQj0Ea
>>896
アセットをかっていないのが原因だと思いますよ
0898名前は開発中のものです。2014/09/16(火) 23:35:46.74ID:sI57oppG
昨日、こちらでNGUIでのHP表示について質問した物です。

お陰様でHPを表示出来る様になったのですが、HPゲージの方が良いかな?と思い、昨日教えて頂いた物にアレンジして
HPゲージを実装したのですが、GUIで表示すると遠くに居る敵のゲージも同じサイズで表示されてしまい、画面が非常に喧しい状態です。
NGUIで、遠近法の様な表現は出来るのでしょうか?遠くに居る敵のゲージは小さく表示したいのですが、何か方法をご存知の方教えて下さい。

またもや解りにくい質問ですみません。
0899名前は開発中のものです。2014/09/16(火) 23:39:32.96ID:0UBiUxq3
>>897
自己解決しました
いつも的確なアドバイスありがとうございます!
0900名前は開発中のものです。2014/09/16(火) 23:51:51.69ID:SwAqzR2+
>>898
カメラと敵の距離とってそれに応じてスケール掛けりゃ良いじゃん
0901名前は開発中のものです。2014/09/17(水) 00:15:33.55ID:uxOiWrE2
>>900
返信ありがとうございます。
Vector3.Distance(this.transform.position,target(カメラ).transform.position)
で距離を取って、その値に応じてサイズを小さくするという事ですかね?ちょっと具体的なスクリプトが思い浮かばないんですが、そういう関数とかUnityで用意されてるんでしょうか?

本当に素人ですみません。
0902名前は開発中のものです。2014/09/17(水) 01:06:45.26ID:TgClCkNf
敵オブジェクトの位置をenemyPosition、カメラの位置をcameraPositionとして
transform.localScale=Vector3.one/Vector3.Distance(enemyPosition,cameraPosition);
とでも書けばそれでカメラと敵の距離に応じて拡縮されるだろう。
これ素人とかそういう話じゃなくて殆ど小学校の算数レベルの話なのでちとまじめに数学やったほうがいいよ
0903名前は開発中のものです。2014/09/17(水) 01:44:57.57ID:dCsQf4sl
ugui でImageのFillAmountいじって0と1の間ピョコピョコさせて
遊ぼうと思って、下のように書いたら一旦0から1まで正常に画像
サイズが変わった後、画像が表示されなくなる事案が発生した。
インスペクター上では0から1までの値を絶え間無く動いてるんだけど
なんで見えなくなったのか、心当たりある方いませんか?
0904名前は開発中のものです。2014/09/17(水) 01:46:01.90ID:dCsQf4sl
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class hptest : MonoBehaviour {

Image hp;
float point;

// Use this for initialization
void Start () {
hp = GetComponent<Image>();
}

// Update is called once per frame
void Update () {
if (point < 1f) {
point += 0.5f * Time.deltaTime;
} else {
point = 0f;
}
hp.fillAmount = point;
}
}
0905名前は開発中のものです。2014/09/17(水) 05:16:56.25ID:L0ltBKpB
>>904
pointの値が0.9999ぐらいまで達した時、
結局1.0より大きい値を代入してしまうからじゃないかな。

エラーコンソールには何も出ないのかな?
とにかく、ログ出したりブレークポイント設定する癖は付けよう。
0906名前は開発中のものです。2014/09/17(水) 05:32:19.35ID:L0ltBKpB
void Update () {
point += 0.5f * Time.deltaTime;
if(point > 1.0f){
point = 0f;
}
hp.fillAmount = point;
}
}

こうかな。

あと0.5fみたいなマジックナンバーは、
少なくとも人にコード見せる時には望ましくない。
まぁ適当な試し書きなんだろうけど、
public float duration = 0.5f;
とでもして調整しながら遊ぶんだほうが楽だし、一石二鳥。
0907名前は開発中のものです。2014/09/17(水) 08:59:27.56ID:3TtavMW+
>>906
なるほど
特にエラーコンソールには何も出てませんでしたね。
今外だから確認できないけど、あとで書き方直してみるよ。

あ、ちなみに私は903です
0908名前は開発中のものです。2014/09/17(水) 19:15:23.65ID:PCuRqwcr
proが無償提供されましたが、単に高機能だから、で移行していいのですか?
何か罠があったりします?
0909名前は開発中のものです。2014/09/17(水) 20:25:43.98ID:lKIQahDY
それ、PS3、PS4 VITA開発用ライセンスだよ。
フリーの人はフリーの機能しか使えない
0910名前は開発中のものです。2014/09/17(水) 20:42:29.24ID:VDrmalKG
それ様に作っても普通の人は発表も出来ないんじゃー
0911名前は開発中のものです。2014/09/17(水) 21:16:24.10ID:v03MWI3F
実行ボタン押すとGame、Scene以外が真っ黒になるんですけど
何が問題だと考えられますか?

一度アンインストールして入れなおしたり、
プロジェクト読み込みなおしたりはしました。
再起動もしました。
0912名前は開発中のものです。2014/09/17(水) 21:27:10.42ID:cOvTCFWZ
ソニーにお金払えば売ってもらえるんでしょう?
0913名前は開発中のものです。2014/09/17(水) 21:34:11.38ID:vCDmkxyV
>>911
メニューの[Edit]→[Preferences...]→Colorタブ→Playmode init
はどうだい?
0914名前は開発中のものです。2014/09/17(水) 22:00:41.35ID:dCsQf4sl
903の続きだけど
>>906みたいに書いたがダメみたいだった。
そこで、試しに代入する値を0じゃなくて0.1とか他の値にするとその値からの画像はgame windowにも反映されました。

本当は0使いたいけど、とりあえず確認ついでに報告
0915名前は開発中のものです。2014/09/17(水) 22:09:24.55ID:v03MWI3F
>>913
ありがとうございます!解決しました。
0916名前は開発中のものです。2014/09/17(水) 22:54:47.83ID:6eZ6UBuv
Animatorコンポーネントを利用したアニメーションで、スクリプトを用いて
アニメーションを途中から開始する方法など無いでしょうか?
(1ループ60フレームのアニメーションを30フレーム目から始めるとか)
0917名前は開発中のものです。2014/09/18(木) 05:47:40.83ID:1IwjnSZ3
ごめん、909って無償提供されるのはUnity ProじゃなくてプレステPSVITA用のUnity Proの一機能ってこと?
フリーの人には関係ないんだよね?
0918名前は開発中のものです。2014/09/18(木) 08:51:03.54ID:KWchqHT+
>>917
便乗質問
パブリッシャー登録してるんだけど
そのときに使えるPSMとは違うのかな?
この辺に詳しい人いませんか
0919名前は開発中のものです。2014/09/18(木) 09:06:58.22ID:mFsSOliH
今回の話は基本的に個人開発者は関係ないよ
UnityProを貰うためにはソニーと正式に契約を結ばないと駄目
もちろんPSMとは全く別
0920名前は開発中のものです。2014/09/18(木) 09:52:56.86ID:aS/F3+Tz
プロの開発テクニックがあちこちで共有されはじめたら、
おまんま喰えませんから、素人には解放いたしません
0921名前は開発中のものです。2014/09/18(木) 12:16:20.41ID:1IwjnSZ3
なんだ、関係ないんですか
すべての開発者じゃなくて開発社ってことか・・・
0922名前は開発中のものです。2014/09/18(木) 13:26:58.60ID:lMrEffR+
質問よろしいでしょうか?
アクションゲームを制作していて、プレイヤーがエリアに入ると敵が出現するスクリプトを書いたのですが、
プレイヤーがそのエリアを出た時にOnTriggerExitでそのエリア内の敵をまとめて削除しようと思っています。

その為、空オブジェクトをInstantiateしてエリアの子要素に。次に敵をfor文で一定数Instantiateして、先の空オブジェクトの子要素に。
と言う方法をとっているのですが、こうするとランダムの座標で生成された敵が空オブジェクトの座標に固まって生成されてしまいます。

敵をエリアの子要素にして、プレイヤーがエリア外に出た時には、敵の生成、削除自体はきっちり行われたのですが、
Transform child out of bounds
というエラーが出てしまった為、(for分で一つずつ子要素をDestroyしていたせいだと思います。)上記の方法を取っています。

エリアから見て子要素にした時はランダム座標が維持されるのに孫要素にすると一点に固まってしまうのはそういうものでしょうか?

何か良い解決策があればご教示願います。
0923名前は開発中のものです。2014/09/18(木) 13:40:40.80ID:+AXSMCOr
できない訳がないのでおかしなプログラムを書いてるだけだろう。
Transform child out of boundsは要素を超えてオブジェクトを削除しようとしてるだけだ。
5つしかないものを6回消そうとしているってこと。
for文の書き方を理解していないということであり固まって生成されるのも同じようなプログラム上のミスだろう。
0924名前は開発中のものです。2014/09/18(木) 13:46:18.21ID:19YDDXs0
>>922
forかwhileでtransform childrenをループして消そうとしてるんじゃねぇの?
ループの中で数が減らされた分が考慮されてない感じ。

あとエリア纏めてるオブジェクトに子オブジェクトつるしておけば出口では纏めてるオブジェクト一個destroyするだけで纏めてパージできるよ
0925名前は開発中のものです。2014/09/18(木) 14:09:51.74ID:lMrEffR+
>>923
ですよね?もう一度見直してみます。

>>924
おっしゃる通りfor分でループして消そうとしていた為に出たエラーだと思います。
エリア自体は再利用というか、またプレイヤーが入った時に敵を生成したいのでその子要素にから纏めて削除する様の
空オブジェクトを作ったのですが、そこで上記の様な状態になってます。
0926名前は開発中のものです。2014/09/18(木) 17:49:40.56ID:Z8+2C39O
blenderでunity用のモデルを作っているのですが、
両面かするとblenderでの認識がおかしくなってしまいます・・・
unity側で両面化などは行えるのでしょうか?
0927名前は開発中のものです。2014/09/18(木) 18:08:13.36ID:d+bCV3Yw
両面化ってそもそもどういう操作を言ってるのか。
ダブルサイデッドなシェーダーはデフォルトだとパーティクル系しかない。
ちょっと調べれば自分でシェーダをダブルサイデッド化するのは可能。
0928名前は開発中のものです。2014/09/18(木) 18:38:14.11ID:d+bCV3Yw
あとついでに言うとBlenderで作っててBlender内での認識がおかしいのは
モデルのデータが既におかしいのではないか。
0929名前は開発中のものです。2014/09/18(木) 18:46:54.72ID:lMrEffR+
またもや質問失礼しまうす。

NGUIを使って敵のHPゲージを画面内に敵の座標に表示しているのですが、敵がカメラの視界外になった出た時に
SetActiveをfalseにして視界に入ったら、trueにするというスクリプトを書いているのですが、

var viewPos : Vector3 = Camera.mainCamera.WorldToViewportPoint(transform.position);
//Debug.Log(viewPos);
if( viewPos.x < -0.5f || viewPos.x > 1.5f || viewPos.y < -0.5f || viewPos.y > 1.5f ){
labelNameObj.SetActive(false);
}else{
if( viewPos.x > 0.0f || viewPos.x < 1.0f || viewPos.y > 0.0f || viewPos.y < 1.0f ){
labelNameObj.SetActive(true);
}


こう書くとカメラの視界の真後ろに居る時もtrueが送られてしまいます。視界外に消えた時の処理として根本的に間違ってるんでしょうか?

どなたかご教示下さい。
0930名前は開発中のものです。2014/09/18(木) 18:59:23.02ID:dqVmO5Q1
2Dのジャンプで詰まったので質問させてください。

rigidbody2D.AddForce(new Vector2(0.0f, -jump_power), ForceMode2D.Impulse);

上記のようにしてジャンプを実装しているのですが、

右に移動中にジャンプをした場合、右移動がキャンセルされてジャンプしようとします。
(垂直ジャンプしようとします)

やりたい事は移動中の力を反映したジャンプ(斜め方向のジャンプ)なのですが、どうしたらよいでしょうか?

分かる方、お願いします。
0931名前は開発中のものです。2014/09/18(木) 19:14:52.01ID:mabT2JWT
>>930
移動の処理もAddForceにすればいい!
駄目かな
0932名前は開発中のものです。2014/09/18(木) 19:15:29.13ID:aG6fkobJ
>>929
viewPos.zが正数ならカメラの前方,負数ならカメラの後方にある

ただ、そういう処理はMonoBehavior.OnBecameVisibleとOnBecameInvisibleでやった方が楽ではないかと思う
0933名前は開発中のものです。2014/09/18(木) 19:28:37.75ID:d+bCV3Yw
OnBecameVisible()とかはrendererコンポーネントがついてないと
ダメなんじゃなかったかな〜。
なのでview.Pos.zの正負で判断するのがこの場合は正しいと思う
0934名前は開発中のものです。2014/09/18(木) 19:31:24.66ID:d+bCV3Yw
>>930
左右移動の処理をジャンプ中も続けさせれば良いんじゃね?
もしくは前フレの位置を常に取っておいてジャンプした時に
左右方向の速度を計算してVelocityに放り込む。
0935名前は開発中のものです。2014/09/18(木) 19:32:44.35ID:aG6fkobJ
>>933
>OnBecameVisible()とかはrendererコンポーネントがついてないと
そうだったか、嘘教えてごめんなさい>>929
0936名前は開発中のものです。2014/09/18(木) 19:36:55.77ID:lMrEffR+
>> 933
ありがとうぞざいます!無事望んだ結果になりました!

確かにOnBecameVisibleの方がスマートなのですが、OnBecameVisibleはオブジェクトにRendererが無いと機能しないそうなんです。
HPゲージはGUILabelをしようしているので、働いてくれない様です。

何はともあれ、本当にありがとうございます!
0937名前は開発中のものです。2014/09/18(木) 19:39:05.03ID:lMrEffR+
すみません、アンカーをミスってました。

>>932の方も>>933の方もありがとうございます!
09389302014/09/18(木) 20:00:10.37ID:dqVmO5Q1
>>931
>>934
返答ありがとうございます。

>移動の処理もAddForceにすればいい!
x * Time.deltaTime ですと、あるきっかけでフリーズした場合、
Time.deltaTimeが大きくなりすぎて、早いスピードで飛んでいく可能性があります。

>左右移動の処理をジャンプ中も続けさせれば良いんじゃね?
すでに左右の移動はジャンプ中もForceに入れ続けています。
ジャンプした瞬間に移動がキャンセルになってしまう課題を解決したいです。

>もしくは前フレの位置を常に取っておいてジャンプした時に
>左右方向の速度を計算してVelocityに放り込む。
こちらの方法で試してみます。

ありがとうございました。
0939名前は開発中のものです。2014/09/18(木) 22:08:51.88ID:kK9bImeB
C++でやりたいからってだけでPro買ってる人いる?
0940名前は開発中のものです。2014/09/18(木) 22:39:20.02ID:YzkdkCym
いらない
0941名前は開発中のものです。2014/09/18(木) 23:07:49.43ID:YNjSCuIV
c++のためにpro買うならc#の教本買ったて学んだ方がためになると思う
何のためになるのかは知らん
0942名前は開発中のものです。2014/09/19(金) 07:28:20.71ID:kQLz7WZJ
UnityでC++って、どゆこと?
dll?
0943名前は開発中のものです。2014/09/19(金) 13:06:10.84ID:34wbMNwL
ProだとC++使えると聞いて今まで作ったゲームの移植も少しは楽になるのかなと思って
C#勉強しつつやってみます
0944名前は開発中のものです。2014/09/19(金) 16:35:32.69ID:6H4QSqzF
質問です。

敵に攻撃を加えるとNGUIでダメージを表示する様にしたのですが、敵が出現するエリア(OnCorrisionEnterでPrefabから生成)にプレイヤーが居る時だけ、
ダメージが表示されません。試しに、敵の居ないエリアで同数の敵をプレファブからシーンビューに置いて、攻撃するとちゃんとダメージが表示されます。

エラーログは出ていないのですが、敵をInstantiateした場合だけ表示されない等という事があり得るのでしょうか?

他にNGUIでプレイヤーと敵のHPゲージを表示していて、それらの表示は正常です。どなたか解る方教えて下さい。
0945名前は開発中のものです。2014/09/19(金) 16:45:03.43ID:7f+A6pyf
>>944
そのゲームがどんなデータ構造でどんな風にデータのやり取りしてるかも
わからんのに判る訳ねぇw

まぁありがちな例としてはFindで何かを取得しててInstantiateした場合
名前に(clone)がついてるので取得に失敗してるとかくらいか。
0946名前は開発中のものです。2014/09/19(金) 17:10:33.51ID:6H4QSqzF
>>944
説明が足りなかったですね。

今、表示されない部分ではデータのやり取りは、プレイヤーの弾丸からSendMessageで敵オブジェクトにDamegeを
送り、敵側のDamage関数でLabelをInstantiate、InstantiateしたLabelにdamageを送って表示という流れなんですが、
おっしゃるような名前でFindしているのはLabelをPanal配下に置く時しか使っていません。
後、エリアに居る時でもDebug.Logで調べるとLabelにdamageは送られています。にも関わらず、表示だけされません。

説明が非常に解りにくいかと思いますが、よろしくお願いします。
0947名前は開発中のものです。2014/09/19(金) 17:12:41.72ID:6H4QSqzF
あぁ、すみません、敵側のスクリプトではInstantiateしたLabelにはGetComponentしてdamageを送っています。
レス数が900を超えています。1000を超えると表示できなくなるよ。