[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 1101- 2ch.scのread.cgiへ]
Update time : 03/13 00:44 / Filesize : 345 KB / Number-of Response : 1101
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名前は開発中のものです。 mailto:sage [2014/06/26(木) 23:02:03.72 ID:t35CWy1R.net]
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
peace.2ch.net/test/read.cgi/gamedev/1399506271/

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

■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
 www24.atwiki.jp/unity2ch/
●リンク
・Unity(日本公式サイト)
 unity3d.com/japan/
・ユーザーガイド&リファレンス
 japan.unity3d.com/developer/document/
・チュートリアル
 japan.unity3d.com/developer/document/tutorial/
・スクリプトリファレンス
 docs-jp.unity3d.com/Documentation/ScriptReference/
・FAQ
 answers.unity3d.com/index.html
・MSDN
 msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。

274 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 11:36:08.98 ID:W+VtYmCA.net]
audio.Play();
audio.clip = voice;

これ逆じゃね?
あと毎回Play呼ばれてね?

275 名前:名前は開発中のものです。 [2014/07/06(日) 11:42:45.52 ID:+M1clTAW.net]
>>269
ありがとうございます。

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

また、毎回プレイで呼ばれている、確かに
何かアクションを起こす度に音がなります。
それは、「audio.Play();」の再生方法が間違っているのでしょうか。

276 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 12:07:34.19 ID:/ZhdI6Tk.net]
Updateメソッドは毎F呼ばれる
falseにずっとなってても1度しか鳴らしたくないのであれば
フラグでも立てればいいのでは?

var flag : int = 0;

function Update () {
if(goalScript.cleared==false && flag == 0){
audio.Play();
audio.clip = voice;
flag = 1; //再プレイ抑止
}

277 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 12:07:36.22 ID:A7UAPEqP.net]
audio.Play()のつかいかた自体と言うよりも、
毎回、音がなってるからそれ制御してやって。

278 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 12:24:22.63 ID:www09xjy.net]
>>270
アセットを購入しましょう

279 名前:名前は開発中のものです。 [2014/07/06(日) 12:24:31.86 ID:+M1clTAW.net]
>>271
Updateの考え方が分かりました。
PG初心者なもので、ありがとうございます。
毎F呼ばれるので、スタート時や何かアクションを
起こしたときに再生されるのですね。。。

また、ご連絡いただきましたスクリプトですと、
「cleared==false」になったと同時に「flag = 1」に
なってしまいます。
「audio.Play()」再生後に「flag = 1」にするには、
どのように対応すれば宜しいでしょうか。
すみませんが、宜しくお願いします。

280 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 12:46:49.69 ID:g+013jS2.net]
どういう用途でサウンドを再生したいの?
「スタート!」とかBGMとか効果音とかでやり方変わるよ

初心者ならフローチャートみたいのを書いた方が楽にできるだろうし、
論理的な考え方も身につくんじゃないかな?

281 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 12:52:35.12 ID:/ZhdI6Tk.net]
>>274
audio.Play();
audio.clip = voice;

ここ2ステップの正当性については検証していませんが
処理順的にvoiceが鳴ったあとにフラグONされるはずですが・・・
デバッガでステップインしたらちゃんとそこを通っていますか?
voiceにはちゃんと中身が入っていますか?

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



283 名前:名前は開発中のものです。 [2014/07/06(日) 13:10:34.33 ID:+M1clTAW.net]
>>276
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;
}
}

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

も一つおまけにゴール通過した時とゴール地点に居座った時の区別とか付く?

285 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 13:33:54.41 ID:yBLHkZ9t.net]
まず、Updateの仕様を理解するところからはじめようぜ。

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

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

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

286 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 13:46:21.21 ID:/ZhdI6Tk.net]
>>278
アーチっていうのが何か分からないのですが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はインスペクタから鳴らしたいボイスファイルをアタッチします

287 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 13:47:48.80 ID:yBLHkZ9t.net]
まちがった。修正。

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

正)flagを0に

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

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

宜しくお願いします。

289 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 13:53:14.81 ID:9dRES+AK.net]
               ∩―−、
              / (゚) 、_ `ヽ
             /  ( ●  (゚) |つ
.オツカレチャ━━━━━| /(入__ノ   ミ━━━━━ン♪
             、 (_/    ノ
              \___ ノ゙
               /      ヽ
              / 人    \\   彡
            ⊂´_/  )    ヽ__`⊃
                 / 人 (
                (_ノ (_)

290 名前:名前は開発中のものです。 [2014/07/06(日) 14:19:05.13 ID:+M1clTAW.net]
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;
}
}

宜しくお願いします。

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

キャラを動かしてgoalObjとの衝突判定取れるとこまでは出来てるんだよな・・・?
本でも買って一から勉強したほうがいいレベルのような気がするが
黄色い本がオススメだぞ

292 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 15:00:44.87 ID:N5QQMiFF.net]
まず何が解っていないのかすら解っていないと思うので>>286が述べているように書籍なりなんなりで一通りの事を覚える方が良いと思う。
ツクールとかと異なって細かい事までできる分Unityは言われているほど簡単じゃないから。



293 名前:名前は開発中のものです。 [2014/07/06(日) 15:21:00.72 ID:+M1clTAW.net]
>>286
動きの方は問題ないのですが、
サウンドの制御が上手くいきません。
なるのだけれど、&qu

294 名前:ot;Updateが毎フレーム実行"というところで
引っかかり、余計なところで再生してしまう。
モーションもサウンドと似たようなスクリプトだけれど、
サウンドは上手くいきませんね。。。

unity入門は一通り目を通したのですが、
中々応用が厳しい状態です。
[]
[ここ壊れてます]

295 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 15:25:03.44 ID:N5QQMiFF.net]
>>288
本読んでいるってことはGoalオブジェクトとの衝突判定にはCollision使ってるんだよね?
ならCollisionチェック(上でだれかが書いていたけど)のあるScript側でゴール音ならすだけじゃないの?

296 名前:名前は開発中のものです。 [2014/07/06(日) 15:44:08.47 ID:+M1clTAW.net]
>>289
すみません、ちょっと話がループしてしまうのですが、
現状のスクリプト(下記のもの)
でも音がなるのですが、
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;
}
}

297 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 15:47:52.33 ID:BQWLChCY.net]
goalScript.clearedをゴールの判定したところでfalseにする


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

かね

298 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 15:48:31.46 ID:BQWLChCY.net]
あーでもゴール判定するところをこれ以降呼ばないようにしないと何度も出るな

299 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 15:49:11.00 ID:BQWLChCY.net]
あ、上にあることと同じこと書いてあるかもしれないごめn

300 名前:名前は開発中のものです。 [2014/07/06(日) 16:18:25.09 ID:kNYy9+kR.net]
書き込めるかテスト

301 名前:名前は開発中のものです。 [2014/07/06(日) 16:21:41.06 ID:kNYy9+kR.net]
あー失礼
OnCollisionExitで
cleared=falseしてやればいんじゃね
曲の途中でexitされるのがイヤならそれが終了するまで待つ必要があるけど

302 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 16:25:51.67 ID:www09xjy.net]
アセットを購入したらそんな面倒なことしなくてもいいよ



303 名前:名前は開発中のものです。 [2014/07/06(日) 16:52:22.66 ID:+M1clTAW.net]
>>295
ありがとうございます。
「OnCollisionExit」調べさせていただきます。
しかしながら、申し訳ないのですが、
「audio.Play(); 」を一回だけ実行する方法が知りたいです。
現状のスクリプトですと、
unity上で再生ボタンを押したときなど、
余計な時にも鳴ってしまう状態です。。。
宜しくお願いします。

304 名前:名前は開発中のものです。 [2014/07/06(日) 17:03:51.29 ID:kNYy9+kR.net]
>unity上で再生ボタンを押したときなど、
cleared==false
で鳴るんでしょー
初期値がfalseなら最初にUpdateが来たときに鳴るのは正常な動作だよ
cleared=trueに初期化して
何者かがCollisionEnterしたときにcleared=falseにしてあげれば
一回だけ鳴るよ
trueとfalse逆のほうが意味が混乱しないかもしれないけど

305 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 17:34:11.18 ID:www09xjy.net]
>>297
アセット買えばいいと思うよ

306 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 17:44:36.50 ID:h+L1nGu/.net]
>>297
自分だったらプレイヤーに
function Goal {
 audio.clip = voice;
 audio.Play();
}
というメソッドを用意して、ゴールオブジェクトのOnTriggerEnter(Collider other)で
other.gameObject.SendMessage("Goal")
とメッセージを送ります。Updateは使いません

307 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 17:45:49.89 ID:FOrSI5nd.net]
>>262
たしか、if(x)が実行されないのは、x=0の時だけで、x=10とか、でも実行されるよな?不安になってきた

308 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 19:53:39.89 ID:1ai0I56Z.net]
>>301
その辺は>>264が完璧だと思う
x=10でも実行される

309 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 20:08:00.79 ID:8bCjoDHE.net]
まさか音源のコンポーネントの起動時に再生するチェックボックスにチェックが入ってるんではあるまいな?

310 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 20:12:44.73 ID:FOrSI5nd.net]
>>302
サンクス

311 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 22:09:08.54 ID:1ai0I56Z.net]
なぜだ・・・
再生するたびにカメラの追従がガタガタになったり直ったりする

312 名前:名前は開発中のものです。 [2014/07/06(日) 22:12:20.98 ID:+M1clTAW.net]
256です
どうやら上手くいきました。。。
>>271さんのものをベースに再生指定方法を「PlayOneShot」に変更しましたら、
予定した再生方法に出来ました。
"function Update"だと"audio.Play()"は機能しないのですかね。
"function Start"だと再生されるのですが。。。

ひとまず、
色々アドバイスいただき、ありがとうございました!!!



313 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 22:38:43.47 ID:qYY8rbjF.net]
Unityでゲーム作れる男の人ってステキ!
みたいな感じでハーレム築けませんかね?

314 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 23:25:21.79 ID:6HL28AkK.net]
>>305
オブジェクトを物理で動かしてカメラをUpdate()でうごかしたり
オブジェクトとカメラをUpdate()で動かしたりするとそうなる、
かもしれない。

315 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 23:43:29.23 ID:1ai0I56Z.net]
自己解決しました
Inspectorにカメラそのものかカメラが追従するもの(プレイヤー)が表示されたまま
ゲームを再生するとカメラがガタガタになるらしい

316 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 23:48:26.75 ID:W+VtYmCA.net]
Startは初回に1回しか実行されないんだからそりゃ上手く鳴るだろ・・・
全然分かってないと思うんだが大丈夫かよ

317 名前:名前は開発中のものです。 mailto:sage [2014/07/06(日) 23:59:03.64 ID:qYY8rbjF.net]
StartやUpdateの仕様もそうだが、プログラムの基礎が怪しすぎて教えてあげたいが、教えられない。

318 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 06:22:04.29 ID:1a4GRbbJ.net]
アセットを買えばプログラムもいらないと思

319 名前:「ます []
[ここ壊れてます]

320 名前:名前は開発中のものです。 [2014/07/07(月) 11:59:01.03 ID:NmVEc3Ia.net]
Windows の Editer上で、WebViewみたく、Web表示できるアセットってないですかね?

WebViewは、Android,いPhone,Macは、対応してるけど、windowsだけ対応してなくて。
現在開発がWindows中心なのでどうにかそこもカバーしたい。。

321 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 14:05:19.09 ID:HFPJwFqU.net]
クラス内のpublicフィールドを全部一括でインスペクタに表示しない方法ってありますか?

フィールドが2〜3個なら[System.NonSerialized]でいいんですが
50個くらいのフィールドを全てインスペクタに表示しないようにしたいんですが、
一つ一つに[System.NonSerialized]付けていくしかないですか?
一括でできる方法があれば教えて下さい

322 名前:名前は開発中のものです。 [2014/07/07(月) 14:28:44.66 ID:xmI8T3g4.net]
>>314
方法はいくつかある。
その前にSystem.NonSerialized属性はフィールドをインスペクタに表示しない属性じゃなくて、
フィールドをシリアライズしない属性。非表示だけならHideInInspector属性を使うと良いよ。

んで一括で表示させない方法だけど、まずはそのフィールドが本当にフィールドである必要があるかを考える。
プロパティはシリアライズされないから、{get;set;}とかをつけてプロパティにしてしまう手もある。他クラスから取得できるけど設定できない値とかも作れるよ。

他にはカスタムエディタを定義しておく方法がある。
Editorってフォルダ内に適当に「(クラスの名前)Editor」みたいなスクリプト作る。
UnityEditor名前空間を参照して、Editorクラスを継承する。
CustomEditor属性を付けてフィールドを非表示にしたいクラスを渡す。
OnInspectorGUIメソッドをオーバーライドしてインスペクタの表示処理を書く。



323 名前:名前は開発中のものです。 [2014/07/07(月) 14:29:13.89 ID:xmI8T3g4.net]
>>315の例
<例>
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(インスペクタをカスタマイズしたいクラス))]
public class ExampleEditor : Editor
{
public override void OnInspectorGUI()
{
var selectedObject = target as インスペクタをカスタマイズしたいクラス; // ←これが選択中のコンポーネントのインスタンス

// GUI,GUILayout,EditorGUI,EditorGUILayoutなんかを使ってインスペクタの表示を好きにいじれる。
EditorGUILayout.LabelField( "このクラスのフィールドは表示しないよっ!" );

// base.OnInspectorGUI(); ←このコメントを外すと普通にインスペクタが表示される。
}
}

324 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 14:44:25.67 ID:HFPJwFqU.net]
ありがとうございます。参照にします。

ちなみに、System.NonSerialized属性にするとセーブ機能なんかでバイナリ保存したい場合とか
保存できないですよね?
あと、どっかのサイトにHideInInspectorよりSystem.NonSerializedの属性使う方が
トラブルが少ないと書かれていたのでSystem.NonSerializedがいいのかなと思っていました

325 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 14:45:00.13 ID:HFPJwFqU.net]
>ありがとうございます。参考にします。

すみません、誤字でした

326 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 15:15:53.35 ID:HFPJwFqU.net]
すみません、あと一つお聞きしたいんですが
デバッガ(デフォルトのMonoDepeloperです)で、
メソッド名やクラス名から、そのメソッドやクラスの定義場所に
飛ぶ事ってできますか?
メソッド名にカーソル合わせてファンクションキーで

MSのVisualStudioは確か、F5か何かでそういう事が出来ました

327 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 15:30:25.22 ID:eJFMJ6UC.net]
人物のアニメーションをレガシーで制御したいと思い、
適当なFBXファイルをhumanoidからレガシーに設定し直しました
しかし何故か右下のアニメーション確認窓で動きが確認できないので、クリップを切り分けることもできずで困っています
人物型のアバターをドラッグ&ドロップなどしても窓に

328 名前:反映されない感じです

今さらレガシーもなんだとは思うんですが、どなたかわかる方いらっしゃいますか?
[]
[ここ壊れてます]

329 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 16:19:20.74 ID:N3XLjMKC.net]
>>320
アセットを買えばいいと思います

330 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 17:03:34.34 ID:6DBZchmd.net]
>>305
これ、アクションゲーム作るときに凄く悩まされたんだけど、

毎フレーム更新してるから、レンダリング云々でガクガクになるから

カメラ追従の位置をslerp使って中間を取るといいんだよね?

331 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 18:27:13.35 ID:XCqy4kdt.net]
>>322
自分はカメラのpositionをターゲットに追従させながらrotationを向けている
positionはSmoothDamp、rotationはSlerpを使っているけど
Inspectorに何か表示されてるとガクガクなる(特に>>309の条件で確実に発生する)

Inspectorに表示されてることでどういった影響が出てるのかはよくわからない

332 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 18:42:29.10 ID:zFT18/Wd.net]
バグっぽいのは公式に報告しましょう



333 名前:名前は開発中のものです。 [2014/07/07(月) 19:24:12.84 ID:xmI8T3g4.net]
>>317
>HideInInspectorよりSystem.NonSerializedの属性使う方が
>トラブルが少ないと書かれていたのでSystem.NonSerializedがいいのかなと思っていました

もちろんどっちが良いということはない。
ただし用途によって使い分ける必要はある。
その機能がなんのために提供さてれいて、どんなときに使うものなのか常に考えていこう。

>>319
ソースを右クリックしたらGo to declaration(宣言に移動)ってのがあるからそれ。自分の環境だとショートカットはF12になってたよ。
ちにみにその下のFind reference(参照を探す)ってのが選択したクラスやらメソッドやらが使われてる場所の一覧出すやつ。

334 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 19:46:31.46 ID:HFPJwFqU.net]
>>325
ありがとうございます。
F12でいけました!

335 名前:名前は開発中のものです。 [2014/07/07(月) 20:10:33.03 ID:AkErnja1.net]
衝突判定についてご教示ください。
立方体をマウスクリックした際に、どの面がクリックされたかを取得したいのですが

Ray ray = Camera.main.ScreenPointToRay( Input.mousePosition );
if( Physics.Raycast( ray, out hit ){
// 立方体のどの面がrayと交わった?.
}
hitにオブジェクトのワールド座標等が格納されていることは理解したのですが
どの面がクリックされたのか判別の方法がわかりません。
立方体の頂点座標が算出できれば面もわかるのかも知れませんが、知識不足ですみません。

ご存知の方いましたらご教示をお願いいたします。

336 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 20:13:26.02 ID:Ljm9tBgH.net]
失礼、自己解決です。

337 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 20:15:20.63 ID:hxC6zxXd.net]
>>320の質問誰かお願いします
FBXファイルがレガシーでのインポートに対応してないのかと思ったらそんなことないし
よくわかりません
使ってるファイルは有名なフリーのアニメーションアセットです、たしかunity公式だったかな

338 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 20:43:00.20 ID:62bXAYEJ.net]
スクリプトのエラーについて質問です。
先程まで普通に再生できていたのに突然NullReferenceExceptionという
エラーが出るようになり再生できなくなってしまいました。
どうしたら元に戻るでしょうか?
どなたかご教授宜しくお願いします。

339 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 20:54:38.50 ID:b1e9ZXbN.net]
>>330
それがいわゆる有名な「ぬるぽ」というやつです。

340 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 21:46:09.56 ID:9cyM0yix.net]
>>327
hit.pointで判定できると思うんだけど何か問題ある?

341 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 22:03:54.63 ID:T/C3A20J.net]
>>330
そのエラーメッセージのとおりヌルを参照するとそうなる。

とりあえずそのエラーメッセージをダブルクリックすれば
MonoDevelopが起動してスクリプトのどこでエラーが起きてるのか


342 名前:教えてくれる。
今まで何故動いてたのか、とかどうすれば動くようになるのかは
みてみないことにはわからん。


>>329
とりあえずFBXで必ず起きるという現象ではない、とは言える。
手元にあるものはLegasyにしても表示されている。
ただ確かに表示されないという現象が起きたことがあるな〜、
という記憶はあるな。
[]
[ここ壊れてます]



343 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 22:32:23.90 ID:YdReXL8o.net]
該当のスクリプトをいじってないのに急にNullエラーを吐き出した時はUnityを再起動すると直ったりする
直らない時もあったりするからバックアップは必須

344 名前:名前は開発中のものです。 mailto:sage [2014/07/07(月) 22:54:39.38 ID:WzLbsFo2.net]
>>329
他のCGソフトに読み込んでアニメ確認が早い気もするがのー

345 名前:名前は開発中のものです。 [2014/07/07(月) 23:58:14.69 ID:xmI8T3g4.net]
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>331
 (_フ彡        /

346 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 01:10:11.26 ID:6jeNO0ogg]
大量のスプライトをそれぞれ個別にプレハブ化したいのですが
一括でできる方法はないでしょうか?

■環境 : Unity4.51 f3です。
■目的 : 2Dゲームのマップチップ用の画像(スプライト)を
テキストデータに記述したマップ作成用データを元にして
チップごとにInstantiateで作成・配置したいのですが
プレハブ化するために複数のスプライトをまとめて
hierarchyビューなどにドラッグ&ドロップしてしまうと
「Create New Animation」と表示されてアニメーション
作成になってしまいます。

ご存知の方がおられればアドバイスいただけませんか。
よろしくお願いします。

347 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 09:25:06.86 ID:NX4W3vdm.net]
アセットを買えばいいんじゃね

348 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 09:29:06.74 ID:Qd6T63my.net]
>>338
ダメに決まってんだろこのアスペが。

349 名前:309 mailto:sage [2014/07/08(火) 09:51:12.27 ID:4qnhUGqB.net]
>>332
ありがとうございます。
hit.pointは衝突した座標が取得できると思うのですが
そこから立方体の各頂点、面はどうすれば判別できるでしょうか?
見当違いなこと聞いてたらすみません。

350 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 10:02:05.26 ID:ZJvtMt/G.net]
>>333-316
返信ありがとうございます。
今度からはちゃんとバックアップ取っておくように気をつけようと思います‥‥

エラーが出てる箇所は
if(transform.position.y < fallLimit || transform.position.x < cam.transform.position.x -8){
Application.LoadLevel("menu");
}
Destroy(gameObject);
}
↑の

if(transform.position.y < fallLimit || transform.position.x < cam.transform.position.x -8){
この部分なんですが、どこがおかしいのかよろしければ教えて頂けないでしょうか?

351 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 10:28:29.63 ID:ytRwZWLO.net]
>>313
ttp://uwebkit.com
これがWindowsで使えるWebViewを提供してる、ただしプラットフォームがWin,Mac,iOSのみ
Win側の実装は別プロセスでWebKitブラウザサーバが動いていてそいつにレンダリングさせた画像を取得する方式
俺はコレとGreeのWebViewのAndroidとをラッパーと#ifでAPIそろえてから使ってる。
uWebKit単体はテクスチャレンダリングとかも含んでるのでAndroidを捨てるなら3Dゲームのシーン内で看板にしたりとかもできる

352 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 10:28:45.55 ID:t1kUpUtT.net]
>>340
恐らくだが、

コンタクトポイントは物理エンジンが
衝突検知したときに生成してよこしてくる。

ttp://docs.unity



353 名前:3d.com/ScriptReference/Collision-contacts.html
The contact points generated by the physics engine.

コリダー自体はメッシュコリダーだけではなくスフィアやカプセル、
キューブなんかもあるのでコンタクトポイント生成の仕組みに
頂点や面は常に関係している訳ではない。
ということはメッシュコリダーを使った時に頂点や面の情報を提供するには
特別にその為の機能が実装されていてその情報をストアするデータ構造が
用意されていなければならないはずだがそういうものはない。

てあたりから考えるにコンタクトポイント配列から一番近い面、頂点なりを
割り出す機能を自分で実装するしかない、のではないかな。
[]
[ここ壊れてます]

354 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 10:33:31.76 ID:t1kUpUtT.net]
>>341
その中身だと多分cam、が割り当てられていないとか
実行時に消滅しちゃってるとかそんな話じゃない?

355 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 11:08:22.80 ID:ZJvtMt/G.net]
>>344
ご指摘通りcamが割り当てられていなかったみたいでした‥‥。
助かりました。ありがとうございます!

356 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 12:18:46.50 ID:QX88T4yM.net]
>>333
>>335
ありがとございます
Raw Mocap Dataってアセットを使ってたんですが、
どうやらここのFBXデータは軒並みレガシー化が出来ないようです
理由はよくわかりませんがメカニム専用に作られてるんでしょうね
他のアセットでは出来ました

使いたいモーションはここのやつだったので残念です

357 名前:309 mailto:sage [2014/07/08(火) 12:42:36.02 ID:4qnhUGqB.net]
>>343
ありがとうございます。
そうですよね……
そもそも衝突したオブジェクトが立方体かどうかなんて
エンジン側には関係ないわけで、自分で計算するしかありませんよね。

その計算方法がいまいちピンとこないのですが……数学がんばっとけばよかったな。
また質問させていただくかもしれません。
回答くださった方、ありがとうございました。

358 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 12:43:59.96 ID:Qd6T63my.net]
>>338
ダメに決まってんだろこのアスペが。

359 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 12:48:54.92 ID:t1kUpUtT.net]
>>346
ちょっと開いてみたがこのデータはモデル(メッシュ)が入ってないんだわ。
なのでレガシーにしてプレビューしたいならまずRawMocapDataの
一番上の階層のDefaultAvatarのリグをレガシーに設定した上で
Animationsの中のクリップをレガシーにしてプレビューの右下にある
人マークをクリックしてotherを選べばFBXやPrefabの一覧が出てくるので
そこでさっきレガシーに設定したDefaultAvatorを選べばプレビューできる。
少なくとも俺のところではできた。

360 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 13:23:17.22 ID:xirEgGux.net]
>>349
アセットをかったほうがいいよ

361 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 13:57:39.34 ID:ddu7OeuU.net]
RPG、SRPG系ゲームのセーブ・ロード機能を作りたいです。
ググってみるといくつかサイトが見つかったのでバイナリでデータを
保存するという処理を見つけました。
ttps://github.com/KentaYanase/KentaYanase/blob/master/Unity/SaveLoad/SaveLoad.cs

これってRPG、SRPG系ゲームのセーブ・ロード機能として使えますか?

あと実際ちょっとこの処理を使ってセーブをやってみたのですが、この処理の使い方に
「セーブしたい時はコードから"SaveLoad.Save();"とするだけです」と書いてありました。
なので、SaveLoad.Save();と書いてコールしてみましたが、以下のエラーが出ました。
IOException: Sharing violation on path C:\Users\user\Documents\RPG test\Save\SaveData.dat

デバッガで追ってみると上記コードの137行目bf.Serialize(fs, data);でdataの中身がnullでした。
おそらくこれが問題だと思うのですが、dataの格納処理はCrateSaveFileメソッドでのみやっています。
しかし、SaveLoad.Save();と記述してコールするとCrateSaveFileメソッドはコールされないようです。
これではどうやってもdataに値は格納されないと思うのですが、これは上記の元コードが
間違っているのでしょうか?それとも私の解釈が間違っているのでしょうか?

362 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 14:07:46.08 ID:baCtLp31.net]
>>348
回転していない原点中心の立方体だったら点がどの面上か判定するのは簡単でしょ
逆に言えば逆行列を掛けてその状態までもっていけばいいんじゃないのかな

力技でいいなら立方体のコリジョンを面ごとに分割してもいけそうな気がする
試してないからうまくいくかは知らん



363 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 16:59:41.35 ID:XshOldtu.net]
>>351
見る限りは初回のみCreate、以降はSaveで呼び出すみたい。

364 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 18:29:48.19 ID:ddu7OeuU.net]
>>353
確かにその分岐で起動するとエラーメッセージは出なくなりました

この処理ってどう見てもsettingsクラスとconfigクラス内のものだけを
バイナリファイルにセーブする、っていう意味ですよね?

つまり主人公のパラメータだのセーブ時の主人公の位置だの
シーン名だの敵の位置だのイベントフラグだの、それら全部を
settingsかconfigクラスに列挙してdataの対象にする必要がある、という事ですよね?

365 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 18:43:34.20 ID:t1kUpUtT.net]
そりゃそうだ。俺が何をセーブしたいか自動で判別してくれる
セーブロードクラスとか怖すぎるだろw
まぁゲームコントローラーで作った独自クラスの中身を
セーブするように改造してもそれほど面倒ではなさろうだけど

366 名前:309 mailto:sage [2014/07/08(火) 18:45:16.78 ID:4qnhUGqB.net]
>>352
私へのレスかな?(違ったらスミマセン)
実はその立方体は絶えず向きを変えながら動きまわってまして。。。

衝突点(RaycastHit.hit)と立方体の原点(RaycastHit.transform.position?)は取れると思うので
どうにか導きたい。
考えてみます。ありがとうございます。

367 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 19:02:51.92 ID:F4NuZqsK.net]
>>354
俺もその投稿みたとき「何をセーブするの?」って思ったよw
そのアセットは触ったこと無いけど、
C#はクラスデータをserialize化する機能があるから、それでパックしてるんだろうね
となるとポインタ的な何かが必要で、それが無くてNULLなんじゃね?

368 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 19:33:47.74 ID:ddu7OeuU.net]
>>357
単純にdataインスタンスにシリアライズしたsettingsクラスとconfigクラスを
入れるメソッドを経由してなかったからみたいです

これって例えばパラメータとかフラグ管理してるコンテナクラスとか
色んなマネージャークラスや敵クラスとか、ロード時読み出したいクラス全部に
System.Serializable ()]属性付けないといけないって事ですよね?

369 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 19:42:19.15 ID:GK/wakWz.net]
>>349
ありがとうございます!
確かにおっしゃる通りで、DefaultAvatarをコピってDefaultAvatarLegacyってのを作って
それをLegacyに設定すると表示されるようになりました、感激です!
ただ
Raw Mocap Dataのうち例えば
Idle/Idle_Neutral_1
Idle/Idle_Neutral_2
など、表示はされるもののTポーズのまま動かない、みたいな状態になるものが多いですね

Idle/IdleR_To_IdleL_1
Idle/IdleR_To_IdleL_2
とかはピボットの位置と大きくずれてたり

でもだいぶ核心に近づいてきました!

370 名前:333 mailto:sage [2014/07/08(火) 21:23:19.99 ID:baCtLp31.net]
>>356
レス番号間違えたけどさっきのは329へのレスね
立方体が動き回っていても位置(position)と回転行列(rotation)が分かれば問題ないはず
衝突点と立方体中心の差分を取って回転行列の逆行列を掛ければ333に書いた状態になる(多分)

371 名前:314 mailto:sage [2014/07/08(火) 22:38:42.03 ID:A3tN0KUo.net]
>>356
難しく考えすぎだと思う
hit.pointはワールド座標ですが

372 名前:transform.InverseTransformPoint(Vector3)でキューブオブジェクトのローカル座標に変換できます
後は(1,0,0),(-1,0,0),(0,1,0),(0,-1,0),(0,0,1),(0,0,-1)との内積を計算して1に最も近いのがヒットした面の法線方向です
立方体なら簡単に分かる問題

void Update () {
 if(Input.GetMouseButton (0)) {
  Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  RaycastHit hit;
  if(Physics.Raycast(ray,out hit)) {
   var hitPointLocal = transform.InverseTransformPoint(hit.point);
   var faces = new Vector3[] {
    Vector3.right,
    -Vector3.right,
    Vector3.up,
    -Vector3.up,
    Vector3.forward,
    -Vector3.forward,
   };
   var face = faces.OrderBy((c) => Mathf.Abs((1.0f - Vector3.Dot(c,hitPointLocal)))).First();
   Debug.Log (face);
  }
 }
}

こんな感じでどうでしょうか?(Linq使ってるのでusing System.Linq;を頭に追加してください)
[]
[ここ壊れてます]



373 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 22:43:57.76 ID:A3tN0KUo.net]
あ、すまん。hitPointLocalは正規化したほうがいいかも

374 名前:名前は開発中のものです。 mailto:sage [2014/07/08(火) 23:47:44.77 ID:GNYY4mLA.net]
>>358
自前でやるのが筋。
とか思っちゃうおれはオールドタイプなのか?

ゲームシーンをごっそりセーブするなら、
Save Game-JSON+Binary
っていうアセットはどう?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<345KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef