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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/06/26(木) 23:02:03.72ID:t35CWy1R
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質問スレッド9
http://peace.2ch.net/test/read.cgi/gamedev/1399506271/

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

■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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
0187名前は開発中のものです。2014/07/03(木) 21:36:35.94ID:SgATjdgc
>>182
アカウントに結びついているので同じアカウントでアクティベートしてれば大丈夫
30日限定機能を使おうとして別アカ作りまくると買ったアセットは淋しいことになる。
0188名前は開発中のものです。2014/07/03(木) 21:49:37.72ID:CKS7dI6H
>>184
2Dのアニメーション機能は1枚1枚絵を描いて作るパラパラマンガ的なやつだよ
0189名前は開発中のものです。2014/07/03(木) 22:10:46.97ID:PM9QpSUP
>>186 君はさっきからずっとアセットを買わせることしか考えてないのかw
なんだ君はアセットストアの回し者かw
いや大抵のことはアセット買えばどうにかなるってのもわかるけどね
0190名前は開発中のものです。2014/07/03(木) 22:16:36.99ID:PM9QpSUP
あと>>175の件ほぼ自己解決したけど
異なる画面比率を黒枠で対応してるから、画面比率の違いは考えなくてもよかったんや。
画面比率2:3なら、
320x480 640x960 960x1440 1280x1920 辺りから好きなのをいくつか選んで用意しておいて、端末の解像度によって切り替えるだけでええんや。
0191名前は開発中のものです。2014/07/03(木) 22:32:56.13ID:FdjThcxv
>>189
お客さん、踊り子に触れたらダメよ
もう3年ぐらい回り続けてる人だから
0192名前は開発中のものです。2014/07/04(金) 00:06:34.41ID:c2MTBNH7
>>191
そんなに長く居座ってたっけ?
treeboaの別アプローチなら納得するかもしらんが、アセットちゃんはここ半年くらいに沸いたんじゃ?
(そういえばその半年前はもっと酷いのが居たなwww)
0193名前は開発中のものです。2014/07/04(金) 00:52:10.48ID:VBk62LKo
>>184
チュートリアルみたら分かるけど、3dには無い要素も結構含まれてるからなぁ
唐突に2dを作れるようにはならないね
0194名前は開発中のものです。2014/07/04(金) 01:01:00.52ID:q9drZTxa
>>188
パーツをバラバラにして動かす奴のほうがメインじゃね?公式チュートリアルがそのタイプだし
0195名前は開発中のものです。2014/07/04(金) 01:56:45.63ID:MtaEHS9A
cubeオブジェクトを長方形にしてlocalscaleのX軸を1F単位で
増減させる事で格ゲーのライフバーのような、内部数値によって
伸縮するゲージを作ったんですが、起点が中心にあるせいで
伸縮させると片側が伸び縮みするのではなく、左右両側から
中心に向かって伸縮していまいます。
これを解決する方法はありますか?(起点をオブジェクト左端に置くとか)
0196名前は開発中のものです。2014/07/04(金) 02:16:17.53ID:wR5yBZ5m
>>195
座標の中心がどちらかの端面にある立方体モデルを作るといい
0197名前は開発中のものです。2014/07/04(金) 02:35:35.75ID:MtaEHS9A
>>196
それをしたいのですが、それってHierarchy→Create→Cubeなどではなく
完全自作っていう事ですよね?
0198名前は開発中のものです。2014/07/04(金) 02:43:37.29ID:wR5yBZ5m
>>197
うむ、Unityの標準プリミティブって融通が効かないから(球とかポリゴン数やばい)
なんらかのモデリングソフトでそれぐらいは作れるようになっとくといいかと
スクリプトでモデルを出力する手もあるけど
0199名前は開発中のものです。2014/07/04(金) 03:47:34.42ID:MtaEHS9A
>>198
なるほど・・・
ありがとうございました
0200名前は開発中のものです。2014/07/04(金) 07:22:33.68ID:hc2kb0Fa
NGUIのUILabelで縦書きをしたいのですが
何か方法はありますか?
調べても出てこなくて。
0201名前は開発中のものです。2014/07/04(金) 07:29:08.51ID:WsivLMs6
>>200
アセットを購入するという方法がありますよ。
0202名前は開発中のものです。2014/07/04(金) 07:51:51.54ID:cjLco/W6
lookatがiPhone実機だと適用されないのですが
pro版のみの仕様だったりしますか?
4.5.1を使っています
0203名前は開発中のものです。2014/07/04(金) 08:05:46.38ID:hc2kb0Fa
>>200
ありがとうございます!
縦書きする為に有名なアセットがあれば
お勧めしてください。
0204名前は開発中のものです。2014/07/04(金) 12:14:25.34ID:NPAj8i2R
>>203
アセットストアで検索したらいいと思うよ
0205名前は開発中のものです。2014/07/04(金) 12:20:27.58ID:58i9wtLO
>>203
アセットでは解決しないよ
0206名前は開発中のものです。2014/07/04(金) 12:43:12.82ID:X8NyIDls
>>199ちょっとしたモデリングができた方が良いのは確かだけれど、
1.空のゲームオブジェクトを作る
2.↑の子としてキューブを作る
4.キューブのローカルX座標をキューブのスケールXの半分にする(大きさが1,1,1なら、座標を0.5,0,0にする)
5.ゲームオブジェクトのスケールXをいじる
っていう方法でもできるよ 回転や拡大の中心点変えたい時は空のゲームオブジェクトを親にするのが楽ちん

>>191そうだねごめん。今度はちゃんと客席から眺めるだけにするよ
0207名前は開発中のものです。2014/07/04(金) 12:45:49.24ID:WsivLMs6
>>205
アセットを「購入」しなければ解決はしませんよ?
0208名前は開発中のものです。2014/07/04(金) 12:51:21.07ID:X8NyIDls
>>202
ルックアットはモバイル端末でもフリー版でも使えるはず。
予想できるのは…

ルックアットを呼ぶ前の処理でエラーが起きてて向きを変える処理まで辿り着いていないとか…
(実機でエラーが起きてもアプリは停止しない)
それならApplication.RegisterLogCallbackとか使って例外を画面に表示すると捗るよ。

タッチの判定をInput.GetMouseButtonとかInput.mousePositionみたいなマウス系の命令でやってるとか…
(マウス系の命令でモバイル端末のタッチは取得できない)
それならInput.touchCountとかInput.GetTouchのタッチ系の命令を使うと良い。
ただタッチ系の命令はエディタで反応しないから、エディタ用のマウス命令と実機用のタッチ命令両方書いとく必要があるよ 知ってたらごめんね
0209名前は開発中のものです。2014/07/04(金) 12:55:51.90ID:WsivLMs6
>>208
アセットを買うことで謝らなくて済むようになりますが
どうでしょう?
0210名前は開発中のものです。2014/07/04(金) 13:38:39.76ID:MtaEHS9A
>>206
出来ました!
これで単純なゲージ類はすぐ作れそうです
ありがとうございました
0211名前は開発中のものです。2014/07/04(金) 18:58:10.31ID:9Bc+cY7U
ラグドールを設定してみて、パーツの対応関係を間違えたのでやり直したいんですが
どうやって再設定すればいいんでしょうか
各パーツのキャラクタージョイントを一つずつ選択していって削除するしかないですか?
0212名前は開発中のものです。2014/07/04(金) 19:35:39.47ID:NPAj8i2R
>>211
アセットを買えばいいと思いますけど
0213名前は開発中のものです。2014/07/04(金) 20:11:20.22ID:58i9wtLO
アセットでは解決しないよ
0214名前は開発中のものです。2014/07/04(金) 21:33:21.35ID:wR5yBZ5m
>>206
それは盲点だったわ・・・スクリプトや外部ツール使わなくても工夫次第で意外となんでもできるもんなんだな
0215名前は開発中のものです。2014/07/04(金) 21:38:35.28ID:WsivLMs6
>>214
アセットを購入すればもう少し賢くなれるでしょうね
0216名前は開発中のものです。2014/07/04(金) 22:51:43.24ID:8iwJAlvh
>>208
アセットを買え、って言う人は、スレに粘着している基地害なので、気にしちゃいけない
0217名前は開発中のものです。2014/07/05(土) 00:35:34.45ID:fwhKGKE3
>>216
アセットを買うのは間違いなんですか?
0218名前は開発中のものです。2014/07/05(土) 00:36:14.68ID:ZH3A8ic4
アセットはアシェットというほうがかっこいい!!
0219名前は開発中のものです。2014/07/05(土) 07:00:17.73ID:adPva+FU
>>208
処理をすっきりさせたらLookatが効きました。
ありがとうございます
0220名前は開発中のものです。2014/07/05(土) 08:30:15.26ID:Tl1GrWSu
アセットでは不可能だ
0221名前は開発中のものです。2014/07/05(土) 11:31:47.10ID:4hned8nP
xx
0222名前は開発中のものです。2014/07/05(土) 14:40:33.98ID:uavTcDyB
public int hp { get; set; }

これを

public int hp {
get {
return this.hp;
}
set {
this.hp = value;
}
}

って書き換えると下記のエラーがでる。なんでさ。。。

StackOverflowException: The requested operation caused a stack overflow.
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
0223名前は開発中のものです。2014/07/05(土) 15:10:24.46ID:yKo8Fb0P
>>222
getter, setterの名前とインスタンス変数に付けた名前が一緒だから
this.hpを左辺値で解釈するとsetterが、右辺値でthis.hpとしてもgetterが呼ばれる。
222のsetterとgetterは永遠に自分を呼び出す
02242222014/07/05(土) 15:20:48.23ID:uavTcDyB
>>223
あ〜、なるほどー。
理解しました!ありがとうございました。
0225名前は開発中のものです。2014/07/05(土) 18:51:37.42ID:DdQVwyxA
そういやダークおじさんってこのスレだったけ?
グラボのスレ見てたら出没してて戦慄を覚えたw
0226名前は開発中のものです。2014/07/05(土) 19:01:05.79ID:yKo8Fb0P
>>225
またそういう「いあ、いあ、くとぅるふ」みたいなこと言うと来るかもしれないぢゃないか!!
0227名前は開発中のものです。2014/07/05(土) 19:53:00.68ID:LqlDa1fK
>>226
Assetを購入することで
来るのを阻止できると思いますよ。
0228名前は開発中のものです。2014/07/05(土) 19:58:22.49ID:oSqj5Eii
一匹いるだけで十分うざいのに昔もう一匹いたの?それとも同一人物?
0229名前は開発中のものです。2014/07/05(土) 20:30:09.68ID:fwhKGKE3
>>228が一匹目
0230名前は開発中のものです。2014/07/05(土) 20:48:21.60ID:SilqY6PO
すみません、一昨日透明な方法について質問した>>172です。
今起きた現象の意味が分からなかったのでまた質問させて頂きます。

スタンダードパッケージのFX water(Pro Only)シェーダー(頂点/フラグシェーダー)の最初のサブシェーダーの中に
Blend SrcAlpha OneMinusSrcAlpha
と透明になってもらうためにブレンディングを付け足して透明度を自由に変えることができるようになったのですが
その水の中(カメラから見て水より向こう側)に置いたオブジェクトがまったく見えません…
シェーダーのいらない部分を確かめながら消していき
カリングやデプス、ブレンディングをいくつか追加したり消したり
と試行錯誤してみたのですが結局うまくいきませんでした。

しかしその後アルファ値を少しいじって
適当にオブジェクトを水に出し入れしたら
さきほどやりたいことどおりに水の中で映ってくれました…
驚いてその時のコードをもう一度見返しましたが結局自分が最初に付け足した
Blend SrcAlpha OneMinusSrcAlpha とオールドカードの部分を消していた
ぐらいしかやってることはありませんでした。

一応チャンスと思い保存しといたのですが、Unityを再起動すると
元の向こう側のオブジェが見えない状態になっていました。


ブレンディングを変えればいいのか
カリングやデプスなどが必要なのか
一時的にGPUの質が落ちてIF文で別の方向に行ったのか
それともUnity Pro限定とかのせいなのか
一体なにが原因だったのか意味が分かりません。

どなたか原因はわからなくてもいいので水の向こう側をちゃんと映す方法を教えてもらえないでしょうか…?
無知な長文本当に申し訳ない。
0231名前は開発中のものです。2014/07/05(土) 21:02:02.66ID:LqlDa1fK
>>230
Assetを購入しなければ
一生オツムが弱いまま終わってしまいますよ。
本当にそれでいいのですか?
0232名前は開発中のものです。2014/07/05(土) 21:11:58.63ID:5RDMk77l
>>230
シェーダを下記のように変更したらどうでしょうか
SubShader {
 Tags { "RenderType"="Transparent" "Queue"="Transparent+1"}
 Blend SrcAlpha OneMinusSrcAlpha
 ZWrite Off
 〜略〜
}
0233名前は開発中のものです。2014/07/05(土) 21:24:05.24ID:yKo8Fb0P
>>230
水とか透明表現の関係は描画順序とかにも依存するので一概にコレが原因って言うのは非常に難しいよ
0234名前は開発中のものです。2014/07/05(土) 21:48:11.50ID:6/5YeGIR
>>230
反対側からみてみ?
描画順の問題だったら見え方が違うかもしれないよ


モニターの裏から見ろって事じゃなくて、おぶじぇくとのむこうからみるってことだからな
0235名前は開発中のものです。2014/07/05(土) 21:53:25.70ID:SilqY6PO
>>232,233,234さん
非常に助かりました!
透明にする時はTagでの描画順序的なものを考慮するべきだったんですね。
これでやっとモーション作りに移れそうです。
迅速な返答、ありがとうございます。
0236名前は開発中のものです。2014/07/06(日) 00:00:05.93ID:N5QQMiFF
>>235
最近のunityスレは殺伐としてるのでとっても心あたたまったよ
頑張れ
0237名前は開発中のものです。2014/07/06(日) 01:27:30.34ID:+x1vY1xa
>>218
幼女っぽい
0238名前は開発中のものです。2014/07/06(日) 02:18:14.83ID:1ai0I56Z
Shuriken(ParticleSystem)のrotationの回転軸は変えられないのでしょうか
波動エフェクトを様々な角度にして生成したいのですが
0239名前は開発中のものです。2014/07/06(日) 02:45:22.90ID:jnVGzpVR
>>238
アセットを買えばいいと思うよ
0240名前は開発中のものです。2014/07/06(日) 08:34:29.99ID:+M1clTAW
javascriptでゲーム制作を勉強中です。
"!"の使い方について教えてください。

ちょっと詳細を省きますが、
下記のような式がありまして(色々省いています)

var open_switch : boolean ;
var temp_open_switch : boolean ;

if (temp_open_switch != open_switch)
 →これは比較演算式で左右の値が等しくない場合は”ture”ですよね
if (!open_switch)
 →このように、先頭に来る場合はどのような意味になるのでしょうか?

ググったけれ見つけられず、
申し訳ございませんが、宜しくお願いいたします。
0241名前は開発中のものです。2014/07/06(日) 08:41:02.52ID:1ai0I56Z
>>240
if (!open_switch)

if (open_switch==false)
と同義
0242名前は開発中のものです。2014/07/06(日) 08:50:31.77ID:+M1clTAW
>>241
なるほど、ありがとうございます!
そうすると下記のような場合だと

var open_switch:GameObject;
if(!open_switch)

”open_switch”が"GameObject"とイコールではないとなるのでしょうか…
すみません、宜しくお願いします。
0243名前は開発中のものです。2014/07/06(日) 08:51:42.60ID:FBnZyoZb
Unityで実装されたブラウザアプリの実行時速度を
外部からコントロールできるような手法やツールはあるのでしょうか。
Unityアプリのスピードを、速くしたり、遅くしたりということをツール等を
使ってできるのかがわかりません。
タスクマネージャからブラウザのプロセスの優先度を下げたり、上げたりして
みましたがアプリのスピードを変える事ができませんでした。
どなたかご存知でしたらご教授ください。
0244名前は開発中のものです。2014/07/06(日) 09:04:00.69ID:1ai0I56Z
>>242
その場合はopen_switchがnullのときだけ
つまりopen_switchに何のGameObjectも代入されてない場合にifの先が実行される

・・・と思う
自分もまだ勉強中ゆえ本当にそうかはちょっと自信がない
0245名前は開発中のものです。2014/07/06(日) 09:11:45.22ID:+M1clTAW
>>244
ありがとうございます。
参考にしてみます。
”!”の記入の仕方が色々あり、読み解くのが
難しいです。。。
0246名前は開発中のものです。2014/07/06(日) 10:31:59.86ID:N5QQMiFF
>>245
! variable は数値、真偽値、オブジェクトに対して
variable == 0
variable == false
variable == null
として使う
明示的じゃないので嫌いな人も居るから読みやすいように書けば良いと思うよ。
0247名前は開発中のものです。2014/07/06(日) 10:34:02.81ID:9dRES+AK
             ∩___∩
             |ノ⌒  ⌒ ヽ     
             / ●)  ●) |
オツカレチャ━━━━━|   ( _●_)  ミ━━━━━ン♪
            彡、  |∪| 、`
              /  ヽノ  ヽ
             / 人    \\   彡
           ⊂´_/  )    ヽ__`⊃
                / 人 (
               (_ノ (_)
0248名前は開発中のものです。2014/07/06(日) 10:45:03.89ID:+M1clTAW
>>246
ありがとうございます。
勉強になります!
0249名前は開発中のものです。2014/07/06(日) 11:08:05.44ID:+M1clTAW
サウンドの組み込みについて質問です。
下記のような形で、
指定のゲームオブジェクトに当てはめられている「goalScript」
が「cleared==false」なら「voice」を再生しています。
現状の指定で流れはするのですが、
unity上でのゲーム再生ボタンを押したときに、
頭何フレームかだけ再生されたり、
他のアクションを起こしたときも、動揺に
数フレームだけ再生されたりと
不自然な挙動をします。
色々調べはしたのですが原因がわかりせん。
すみませんが、アドバイスをいただけませんでしょうか。
宜しくお願いします!


var goalObj:GameObject;
var goalScript:GoalScript;
var voice: AudioClip;

function Start () {
goalScript=goalObj.GetComponent("GoalScript");
}

function Update () {
if(goalScript.cleared==false){
audio.Play();
audio.clip = voice;
}
}
0250名前は開発中のものです。2014/07/06(日) 11:13:39.06ID:9dRES+AK
             ∩___∩
             |ノ⌒  ⌒ ヽ     
             / ●)  ●) |
オツカレチャ━━━━━|   ( _●_)  ミ━━━━━ン♪
            彡、  |∪| 、`
              /  ヽノ  ヽ
             / 人    \\   彡
           ⊂´_/  )    ヽ__`⊃
                / 人 (
               (_ノ (_)
0251名前は開発中のものです。2014/07/06(日) 11:36:08.98ID:W+VtYmCA
audio.Play();
audio.clip = voice;

これ逆じゃね?
あと毎回Play呼ばれてね?
0252名前は開発中のものです。2014/07/06(日) 11:42:45.52ID:+M1clTAW
>>251
ありがとうございます。

逆というと、こういうことでしょうか。。。
audio.clip = voice;
audio.Play();

また、毎回プレイで呼ばれている、確かに
何かアクションを起こす度に音がなります。
それは、「audio.Play();」の再生方法が間違っているのでしょうか。
0253名前は開発中のものです。2014/07/06(日) 12:07:34.19ID:/ZhdI6Tk
Updateメソッドは毎F呼ばれる
falseにずっとなってても1度しか鳴らしたくないのであれば
フラグでも立てればいいのでは?

var flag : int = 0;

function Update () {
if(goalScript.cleared==false && flag == 0){
audio.Play();
audio.clip = voice;
flag = 1; //再プレイ抑止
}
0254名前は開発中のものです。2014/07/06(日) 12:07:36.22ID:A7UAPEqP
audio.Play()のつかいかた自体と言うよりも、
毎回、音がなってるからそれ制御してやって。
0255名前は開発中のものです。2014/07/06(日) 12:24:22.63ID:www09xjy
>>252
アセットを購入しましょう
0256名前は開発中のものです。2014/07/06(日) 12:24:31.86ID:+M1clTAW
>>253
Updateの考え方が分かりました。
PG初心者なもので、ありがとうございます。
毎F呼ばれるので、スタート時や何かアクションを
起こしたときに再生されるのですね。。。

また、ご連絡いただきましたスクリプトですと、
「cleared==false」になったと同時に「flag = 1」に
なってしまいます。
「audio.Play()」再生後に「flag = 1」にするには、
どのように対応すれば宜しいでしょうか。
すみませんが、宜しくお願いします。
0257名前は開発中のものです。2014/07/06(日) 12:46:49.69ID:g+013jS2
どういう用途でサウンドを再生したいの?
「スタート!」とかBGMとか効果音とかでやり方変わるよ

初心者ならフローチャートみたいのを書いた方が楽にできるだろうし、
論理的な考え方も身につくんじゃないかな?
0258名前は開発中のものです。2014/07/06(日) 12:52:35.12ID:/ZhdI6Tk
>>256
audio.Play();
audio.clip = voice;

ここ2ステップの正当性については検証していませんが
処理順的にvoiceが鳴ったあとにフラグONされるはずですが・・・
デバッガでステップインしたらちゃんとそこを通っていますか?
voiceにはちゃんと中身が入っていますか?
0259名前は開発中のものです。2014/07/06(日) 12:57:30.13ID:+M1clTAW
>>257
256です。
度々すみません
"キャラを3Dフィールドで動かして、「goalObj」というアーチオブジェクトを
通過したら、「voice」を再生。
また再度通過しても、同様に「voice」を再生する。"
という使用でサウンドを鳴らしたいと考えています。
宜しくお願いします。
0260名前は開発中のものです。2014/07/06(日) 13:10:34.33ID:+M1clTAW
>>258
256です。
いただきましたスクリプトで下記のように記述しています。
現状このような状態です。
・再生すると「flag」が常に1の状態です。
・「flag = 1」の部分をコメントアウトすると音声が流れます。
・「cleared==false」になったときに「flag = 0」になり
 「voice」の再生が終わったら「flag = 1」になるイメージでしょうか。
 (書き方がちょっと分かりませんが…)
宜しくお願いします。

var goalObj:GameObject;
var goalScript:GoalScript;
var voice: AudioClip;
var flag : int = 0;

function Start () {
goalScript=goalObj.GetComponent("GoalScript");
}

function Update () {
if(goalScript.cleared==false && flag == 0){
audio.Play();
audio.clip = voice;
flag = 1;
}
}
0261名前は開発中のものです。2014/07/06(日) 13:27:50.82ID:N5QQMiFF
goalScript.clearedって通過した瞬間だけ1になるようにできないの?
あるいは goalScriptのclearedをクリアチェックして更新してる箇所で
if(audio.isPlaying == false) {
audio.clip = voice;
audio.Play();
}
ぢゃないの?

も一つおまけにゴール通過した時とゴール地点に居座った時の区別とか付く?
0262名前は開発中のものです。2014/07/06(日) 13:33:54.41ID:yBLHkZ9t
まず、Updateの仕様を理解するところからはじめようぜ。

そのスクリプトをつけたゲームオブジェクトがシーンに存在している間は、1秒間に60回とか永遠にUpdateは実行される。

なにかのボタンを押した時だけ再生したいとかなら、そのボタンを押したという情報をUpdate内で判断してplayを実行しなきゃならん。
それが、flagだ。

だから、ボタンを押した時にこのflagを1にしてやる処理を書かないと動かん。
0263名前は開発中のものです。2014/07/06(日) 13:46:21.21ID:/ZhdI6Tk
>>260
アーチっていうのが何か分からないのですが100m走のゴールのようなK点ですか?
そのK点に透明のIsTriggerオブジェクト置いてキャラとK点に置いた
IsTriggerオブジェクトが接触したら(通過したら)

var audioclip : AudioClip; // ボイスフィールド

void OnTriggerEnter (Collider coll){
 if(coll.gameObject.tag == "IsTriggerオブジェクト")
 {
  audio.PlayOneShot(audioclip); //ボイス再生
 }
}

とかすればいい気がします
Enterなら接触した瞬間なので一度しか鳴りません
var audioclip : AudioClipはインスペクタから鳴らしたいボイスファイルをアタッチします
0264名前は開発中のものです。2014/07/06(日) 13:47:48.80ID:yBLHkZ9t
まちがった。修正。

> だから、ボタンを押した時にこのflagを1にしてやる処理を書かないと動かん。

正)flagを0に
0265名前は開発中のものです。2014/07/06(日) 13:47:52.35ID:+M1clTAW
>>261
256です。
”goalScript.clearedって通過した瞬間だけ1”そうなのですが、
書き方がわからず悩んでいるところです。。。

>>262
言われている通りで、
Updateが毎フレーム実行していることがようやく理解出来たところです。
”flagを1にしてやる処理”ここが261さんの返答でも書きましたが、悩んでいるところです。

宜しくお願いします。
0266名前は開発中のものです。2014/07/06(日) 13:53:14.81ID:9dRES+AK
               ∩―−、
              / (゚) 、_ `ヽ
             /  ( ●  (゚) |つ
.オツカレチャ━━━━━| /(入__ノ   ミ━━━━━ン♪
             、 (_/    ノ
              \___ ノ゙
               /      ヽ
              / 人    \\   彡
            ⊂´_/  )    ヽ__`⊃
                 / 人 (
                (_ノ (_)
0267名前は開発中のものです。2014/07/06(日) 14:19:05.13ID:+M1clTAW
256です
サウンドの件ですが、

var goalObj:GameObject;
var goalScript:GoalScript;
var voice: AudioClip;
var flag : int = 1;

function Start () {
goalScript=goalObj.GetComponent("GoalScript");
}

function Update () {
ーーここの部分に「cleared==false」なら「flag」を
0にする指定を書くいめーじでしょうかーー
if(goalScript.cleared==false && flag == 0){

audio.Play();
audio.clip = voice;
flag = 1;
}
}

宜しくお願いします。
0268名前は開発中のものです。2014/07/06(日) 14:57:57.08ID:Ml1Wif2C
>"キャラを3Dフィールドで動かして、「goalObj」というアーチオブジェクトを
>通過したら、「voice」を再生。
>また再度通過しても、同様に「voice」を再生する。"
>という使用でサウンドを鳴らしたいと考えています。

キャラを動かしてgoalObjとの衝突判定取れるとこまでは出来てるんだよな・・・?
本でも買って一から勉強したほうがいいレベルのような気がするが
黄色い本がオススメだぞ
0269名前は開発中のものです。2014/07/06(日) 15:00:44.87ID:N5QQMiFF
まず何が解っていないのかすら解っていないと思うので>>268が述べているように書籍なりなんなりで一通りの事を覚える方が良いと思う。
ツクールとかと異なって細かい事までできる分Unityは言われているほど簡単じゃないから。
0270名前は開発中のものです。2014/07/06(日) 15:21:00.72ID:+M1clTAW
>>268
動きの方は問題ないのですが、
サウンドの制御が上手くいきません。
なるのだけれど、"Updateが毎フレーム実行"というところで
引っかかり、余計なところで再生してしまう。
モーションもサウンドと似たようなスクリプトだけれど、
サウンドは上手くいきませんね。。。

unity入門は一通り目を通したのですが、
中々応用が厳しい状態です。
0271名前は開発中のものです。2014/07/06(日) 15:25:03.44ID:N5QQMiFF
>>270
本読んでいるってことはGoalオブジェクトとの衝突判定にはCollision使ってるんだよね?
ならCollisionチェック(上でだれかが書いていたけど)のあるScript側でゴール音ならすだけじゃないの?
0272名前は開発中のものです。2014/07/06(日) 15:44:08.47ID:+M1clTAW
>>271
すみません、ちょっと話がループしてしまうのですが、
現状のスクリプト(下記のもの)
でも音がなるのですが、
unity上で再生ボタンを押したときなど、
余計な時にも成ってしまう。
→"Updateが毎フレーム実行"の為に起こってします。
そこで、その部分の制御方法が知りたいです。。。申し訳ないです。
その他UIなどのからみもあり、出来れば現状のスクリプトで
解決したく思っております。
また、現状のものに過失修正するのでは、不可能の対応なのでしょうか。
度々お聞きして申し訳ございませんが、宜しくお願いします。

var goalObj:GameObject;
var goalScript:GoalScript;
var voice: AudioClip;

function Start () {
goalScript=goalObj.GetComponent("GoalScript");
}

function Update () {
if(goalScript.cleared==false){
audio.Play();
audio.clip = voice;
}
}
0273名前は開発中のものです。2014/07/06(日) 15:47:52.33ID:BQWLChCY
goalScript.clearedをゴールの判定したところでfalseにする


そしてUpdateで
if(goalScript.cleared==false){
goalScript.cleared=true●●●ここを追加
audio.Play();
audio.clip = voice;
}

かね
0274名前は開発中のものです。2014/07/06(日) 15:48:31.46ID:BQWLChCY
あーでもゴール判定するところをこれ以降呼ばないようにしないと何度も出るな
0275名前は開発中のものです。2014/07/06(日) 15:49:11.00ID:BQWLChCY
あ、上にあることと同じこと書いてあるかもしれないごめn
0276名前は開発中のものです。2014/07/06(日) 16:18:25.09ID:kNYy9+kR
書き込めるかテスト
0277名前は開発中のものです。2014/07/06(日) 16:21:41.06ID:kNYy9+kR
あー失礼
OnCollisionExitで
cleared=falseしてやればいんじゃね
曲の途中でexitされるのがイヤならそれが終了するまで待つ必要があるけど
0278名前は開発中のものです。2014/07/06(日) 16:25:51.67ID:www09xjy
アセットを購入したらそんな面倒なことしなくてもいいよ
0279名前は開発中のものです。2014/07/06(日) 16:52:22.66ID:+M1clTAW
>>277
ありがとうございます。
「OnCollisionExit」調べさせていただきます。
しかしながら、申し訳ないのですが、
「audio.Play(); 」を一回だけ実行する方法が知りたいです。
現状のスクリプトですと、
unity上で再生ボタンを押したときなど、
余計な時にも鳴ってしまう状態です。。。
宜しくお願いします。
0280名前は開発中のものです。2014/07/06(日) 17:03:51.29ID:kNYy9+kR
>unity上で再生ボタンを押したときなど、
cleared==false
で鳴るんでしょー
初期値がfalseなら最初にUpdateが来たときに鳴るのは正常な動作だよ
cleared=trueに初期化して
何者かがCollisionEnterしたときにcleared=falseにしてあげれば
一回だけ鳴るよ
trueとfalse逆のほうが意味が混乱しないかもしれないけど
0281名前は開発中のものです。2014/07/06(日) 17:34:11.18ID:www09xjy
>>279
アセット買えばいいと思うよ
0282名前は開発中のものです。2014/07/06(日) 17:44:36.50ID:h+L1nGu/
>>279
自分だったらプレイヤーに
function Goal {
 audio.clip = voice;
 audio.Play();
}
というメソッドを用意して、ゴールオブジェクトのOnTriggerEnter(Collider other)で
other.gameObject.SendMessage("Goal")
とメッセージを送ります。Updateは使いません
0283名前は開発中のものです。2014/07/06(日) 17:45:49.89ID:FOrSI5nd
>>244
たしか、if(x)が実行されないのは、x=0の時だけで、x=10とか、でも実行されるよな?不安になってきた
0284名前は開発中のものです。2014/07/06(日) 19:53:39.89ID:1ai0I56Z
>>283
その辺は>>246が完璧だと思う
x=10でも実行される
0285名前は開発中のものです。2014/07/06(日) 20:08:00.79ID:8bCjoDHE
まさか音源のコンポーネントの起動時に再生するチェックボックスにチェックが入ってるんではあるまいな?
0286名前は開発中のものです。2014/07/06(日) 20:12:44.73ID:FOrSI5nd
>>284
サンクス
■ このスレッドは過去ログ倉庫に格納されています