トップページ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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
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
サンクス
0287名前は開発中のものです。2014/07/06(日) 22:09:08.54ID:1ai0I56Z
なぜだ・・・
再生するたびにカメラの追従がガタガタになったり直ったりする
0288名前は開発中のものです。2014/07/06(日) 22:12:20.98ID:+M1clTAW
256です
どうやら上手くいきました。。。
>>253さんのものをベースに再生指定方法を「PlayOneShot」に変更しましたら、
予定した再生方法に出来ました。
"function Update"だと"audio.Play()"は機能しないのですかね。
"function Start"だと再生されるのですが。。。

ひとまず、
色々アドバイスいただき、ありがとうございました!!!
0289名前は開発中のものです。2014/07/06(日) 22:38:43.47ID:qYY8rbjF
Unityでゲーム作れる男の人ってステキ!
みたいな感じでハーレム築けませんかね?
0290名前は開発中のものです。2014/07/06(日) 23:25:21.79ID:6HL28AkK
>>287
オブジェクトを物理で動かしてカメラをUpdate()でうごかしたり
オブジェクトとカメラをUpdate()で動かしたりするとそうなる、
かもしれない。
0291名前は開発中のものです。2014/07/06(日) 23:43:29.23ID:1ai0I56Z
自己解決しました
Inspectorにカメラそのものかカメラが追従するもの(プレイヤー)が表示されたまま
ゲームを再生するとカメラがガタガタになるらしい
0292名前は開発中のものです。2014/07/06(日) 23:48:26.75ID:W+VtYmCA
Startは初回に1回しか実行されないんだからそりゃ上手く鳴るだろ・・・
全然分かってないと思うんだが大丈夫かよ
0293名前は開発中のものです。2014/07/06(日) 23:59:03.64ID:qYY8rbjF
StartやUpdateの仕様もそうだが、プログラムの基礎が怪しすぎて教えてあげたいが、教えられない。
0294名前は開発中のものです。2014/07/07(月) 06:22:04.29ID:1a4GRbbJ
アセットを買えばプログラムもいらないと思います
0295名前は開発中のものです。2014/07/07(月) 11:59:01.03ID:NmVEc3Ia
Windows の Editer上で、WebViewみたく、Web表示できるアセットってないですかね?

WebViewは、Android,いPhone,Macは、対応してるけど、windowsだけ対応してなくて。
現在開発がWindows中心なのでどうにかそこもカバーしたい。。
0296名前は開発中のものです。2014/07/07(月) 14:05:19.09ID:HFPJwFqU
クラス内のpublicフィールドを全部一括でインスペクタに表示しない方法ってありますか?

フィールドが2〜3個なら[System.NonSerialized]でいいんですが
50個くらいのフィールドを全てインスペクタに表示しないようにしたいんですが、
一つ一つに[System.NonSerialized]付けていくしかないですか?
一括でできる方法があれば教えて下さい
0297名前は開発中のものです。2014/07/07(月) 14:28:44.66ID:xmI8T3g4
>>296
方法はいくつかある。
その前にSystem.NonSerialized属性はフィールドをインスペクタに表示しない属性じゃなくて、
フィールドをシリアライズしない属性。非表示だけならHideInInspector属性を使うと良いよ。

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

他にはカスタムエディタを定義しておく方法がある。
Editorってフォルダ内に適当に「(クラスの名前)Editor」みたいなスクリプト作る。
UnityEditor名前空間を参照して、Editorクラスを継承する。
CustomEditor属性を付けてフィールドを非表示にしたいクラスを渡す。
OnInspectorGUIメソッドをオーバーライドしてインスペクタの表示処理を書く。
0298名前は開発中のものです。2014/07/07(月) 14:29:13.89ID:xmI8T3g4
>>297の例
<例>
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(); ←このコメントを外すと普通にインスペクタが表示される。
}
}
0299名前は開発中のものです。2014/07/07(月) 14:44:25.67ID:HFPJwFqU
ありがとうございます。参照にします。

ちなみに、System.NonSerialized属性にするとセーブ機能なんかでバイナリ保存したい場合とか
保存できないですよね?
あと、どっかのサイトにHideInInspectorよりSystem.NonSerializedの属性使う方が
トラブルが少ないと書かれていたのでSystem.NonSerializedがいいのかなと思っていました
0300名前は開発中のものです。2014/07/07(月) 14:45:00.13ID:HFPJwFqU
>ありがとうございます。参考にします。

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

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

今さらレガシーもなんだとは思うんですが、どなたかわかる方いらっしゃいますか?
0303名前は開発中のものです。2014/07/07(月) 16:19:20.74ID:N3XLjMKC
>>302
アセットを買えばいいと思います
0304名前は開発中のものです。2014/07/07(月) 17:03:34.34ID:6DBZchmd
>>287
これ、アクションゲーム作るときに凄く悩まされたんだけど、

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

カメラ追従の位置をslerp使って中間を取るといいんだよね?
0305名前は開発中のものです。2014/07/07(月) 18:27:13.35ID:XCqy4kdt
>>304
自分はカメラのpositionをターゲットに追従させながらrotationを向けている
positionはSmoothDamp、rotationはSlerpを使っているけど
Inspectorに何か表示されてるとガクガクなる(特に>>291の条件で確実に発生する)

Inspectorに表示されてることでどういった影響が出てるのかはよくわからない
0306名前は開発中のものです。2014/07/07(月) 18:42:29.10ID:zFT18/Wd
バグっぽいのは公式に報告しましょう
0307名前は開発中のものです。2014/07/07(月) 19:24:12.84ID:xmI8T3g4
>>299
>HideInInspectorよりSystem.NonSerializedの属性使う方が
>トラブルが少ないと書かれていたのでSystem.NonSerializedがいいのかなと思っていました

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

>>301
ソースを右クリックしたらGo to declaration(宣言に移動)ってのがあるからそれ。自分の環境だとショートカットはF12になってたよ。
ちにみにその下のFind reference(参照を探す)ってのが選択したクラスやらメソッドやらが使われてる場所の一覧出すやつ。
0308名前は開発中のものです。2014/07/07(月) 19:46:31.46ID:HFPJwFqU
>>307
ありがとうございます。
F12でいけました!
0309名前は開発中のものです。2014/07/07(月) 20:10:33.03ID:AkErnja1
衝突判定についてご教示ください。
立方体をマウスクリックした際に、どの面がクリックされたかを取得したいのですが

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

ご存知の方いましたらご教示をお願いいたします。
0310名前は開発中のものです。2014/07/07(月) 20:13:26.02ID:Ljm9tBgH
失礼、自己解決です。
0311名前は開発中のものです。2014/07/07(月) 20:15:20.63ID:hxC6zxXd
>>302の質問誰かお願いします
FBXファイルがレガシーでのインポートに対応してないのかと思ったらそんなことないし
よくわかりません
使ってるファイルは有名なフリーのアニメーションアセットです、たしかunity公式だったかな
0312名前は開発中のものです。2014/07/07(月) 20:43:00.20ID:62bXAYEJ
スクリプトのエラーについて質問です。
先程まで普通に再生できていたのに突然NullReferenceExceptionという
エラーが出るようになり再生できなくなってしまいました。
どうしたら元に戻るでしょうか?
どなたかご教授宜しくお願いします。
0313名前は開発中のものです。2014/07/07(月) 20:54:38.50ID:b1e9ZXbN
>>312
それがいわゆる有名な「ぬるぽ」というやつです。
0314名前は開発中のものです。2014/07/07(月) 21:46:09.56ID:9cyM0yix
>>309
hit.pointで判定できると思うんだけど何か問題ある?
0315名前は開発中のものです。2014/07/07(月) 22:03:54.63ID:T/C3A20J
>>312
そのエラーメッセージのとおりヌルを参照するとそうなる。

とりあえずそのエラーメッセージをダブルクリックすれば
MonoDevelopが起動してスクリプトのどこでエラーが起きてるのか
教えてくれる。
今まで何故動いてたのか、とかどうすれば動くようになるのかは
みてみないことにはわからん。


>>311
とりあえずFBXで必ず起きるという現象ではない、とは言える。
手元にあるものはLegasyにしても表示されている。
ただ確かに表示されないという現象が起きたことがあるな〜、
という記憶はあるな。
0316名前は開発中のものです。2014/07/07(月) 22:32:23.90ID:YdReXL8o
該当のスクリプトをいじってないのに急にNullエラーを吐き出した時はUnityを再起動すると直ったりする
直らない時もあったりするからバックアップは必須
0317名前は開発中のものです。2014/07/07(月) 22:54:39.38ID:WzLbsFo2
>>311
他のCGソフトに読み込んでアニメ確認が早い気もするがのー
0318名前は開発中のものです。2014/07/07(月) 23:58:14.69ID:xmI8T3g4
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>313
 (_フ彡        /
0319名前は開発中のものです。2014/07/08(火) 09:25:06.86ID:NX4W3vdm
アセットを買えばいいんじゃね
0320名前は開発中のものです。2014/07/08(火) 09:29:06.74ID:Qd6T63my
>>319
ダメに決まってんだろこのアスペが。
03213092014/07/08(火) 09:51:12.27ID:4qnhUGqB
>>314
ありがとうございます。
hit.pointは衝突した座標が取得できると思うのですが
そこから立方体の各頂点、面はどうすれば判別できるでしょうか?
見当違いなこと聞いてたらすみません。
0322名前は開発中のものです。2014/07/08(火) 10:02:05.26ID:ZJvtMt/G
>>315-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){
この部分なんですが、どこがおかしいのかよろしければ教えて頂けないでしょうか?
0323名前は開発中のものです。2014/07/08(火) 10:28:29.63ID:ytRwZWLO
>>295
ttp://uwebkit.com
これがWindowsで使えるWebViewを提供してる、ただしプラットフォームがWin,Mac,iOSのみ
Win側の実装は別プロセスでWebKitブラウザサーバが動いていてそいつにレンダリングさせた画像を取得する方式
俺はコレとGreeのWebViewのAndroidとをラッパーと#ifでAPIそろえてから使ってる。
uWebKit単体はテクスチャレンダリングとかも含んでるのでAndroidを捨てるなら3Dゲームのシーン内で看板にしたりとかもできる
0324名前は開発中のものです。2014/07/08(火) 10:28:45.55ID:t1kUpUtT
>>321
恐らくだが、

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

ttp://docs.unity3d.com/ScriptReference/Collision-contacts.html
The contact points generated by the physics engine.

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

てあたりから考えるにコンタクトポイント配列から一番近い面、頂点なりを
割り出す機能を自分で実装するしかない、のではないかな。
0325名前は開発中のものです。2014/07/08(火) 10:33:31.76ID:t1kUpUtT
>>322
その中身だと多分cam、が割り当てられていないとか
実行時に消滅しちゃってるとかそんな話じゃない?
0326名前は開発中のものです。2014/07/08(火) 11:08:22.80ID:ZJvtMt/G
>>325
ご指摘通りcamが割り当てられていなかったみたいでした‥‥。
助かりました。ありがとうございます!
0327名前は開発中のものです。2014/07/08(火) 12:18:46.50ID:QX88T4yM
>>315
>>317
ありがとございます
Raw Mocap Dataってアセットを使ってたんですが、
どうやらここのFBXデータは軒並みレガシー化が出来ないようです
理由はよくわかりませんがメカニム専用に作られてるんでしょうね
他のアセットでは出来ました

使いたいモーションはここのやつだったので残念です
03283092014/07/08(火) 12:42:36.02ID:4qnhUGqB
>>324
ありがとうございます。
そうですよね……
そもそも衝突したオブジェクトが立方体かどうかなんて
エンジン側には関係ないわけで、自分で計算するしかありませんよね。

その計算方法がいまいちピンとこないのですが……数学がんばっとけばよかったな。
また質問させていただくかもしれません。
回答くださった方、ありがとうございました。
0329名前は開発中のものです。2014/07/08(火) 12:43:59.96ID:Qd6T63my
>>319
ダメに決まってんだろこのアスペが。
0330名前は開発中のものです。2014/07/08(火) 12:48:54.92ID:t1kUpUtT
>>327
ちょっと開いてみたがこのデータはモデル(メッシュ)が入ってないんだわ。
なのでレガシーにしてプレビューしたいならまずRawMocapDataの
一番上の階層のDefaultAvatarのリグをレガシーに設定した上で
Animationsの中のクリップをレガシーにしてプレビューの右下にある
人マークをクリックしてotherを選べばFBXやPrefabの一覧が出てくるので
そこでさっきレガシーに設定したDefaultAvatorを選べばプレビューできる。
少なくとも俺のところではできた。
0331名前は開発中のものです。2014/07/08(火) 13:23:17.22ID:xirEgGux
>>330
アセットをかったほうがいいよ
0332名前は開発中のものです。2014/07/08(火) 13:57:39.34ID:ddu7OeuU
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に値は格納されないと思うのですが、これは上記の元コードが
間違っているのでしょうか?それとも私の解釈が間違っているのでしょうか?
0333名前は開発中のものです。2014/07/08(火) 14:07:46.08ID:baCtLp31
>>329
回転していない原点中心の立方体だったら点がどの面上か判定するのは簡単でしょ
逆に言えば逆行列を掛けてその状態までもっていけばいいんじゃないのかな

力技でいいなら立方体のコリジョンを面ごとに分割してもいけそうな気がする
試してないからうまくいくかは知らん
0334名前は開発中のものです。2014/07/08(火) 16:59:41.35ID:XshOldtu
>>332
見る限りは初回のみCreate、以降はSaveで呼び出すみたい。
0335名前は開発中のものです。2014/07/08(火) 18:29:48.19ID:ddu7OeuU
>>334
確かにその分岐で起動するとエラーメッセージは出なくなりました

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

つまり主人公のパラメータだのセーブ時の主人公の位置だの
シーン名だの敵の位置だのイベントフラグだの、それら全部を
settingsかconfigクラスに列挙してdataの対象にする必要がある、という事ですよね?
0336名前は開発中のものです。2014/07/08(火) 18:43:34.20ID:t1kUpUtT
そりゃそうだ。俺が何をセーブしたいか自動で判別してくれる
セーブロードクラスとか怖すぎるだろw
まぁゲームコントローラーで作った独自クラスの中身を
セーブするように改造してもそれほど面倒ではなさろうだけど
03373092014/07/08(火) 18:45:16.78ID:4qnhUGqB
>>333
私へのレスかな?(違ったらスミマセン)
実はその立方体は絶えず向きを変えながら動きまわってまして。。。

衝突点(RaycastHit.hit)と立方体の原点(RaycastHit.transform.position?)は取れると思うので
どうにか導きたい。
考えてみます。ありがとうございます。
0338名前は開発中のものです。2014/07/08(火) 19:02:51.92ID:F4NuZqsK
>>335
俺もその投稿みたとき「何をセーブするの?」って思ったよw
そのアセットは触ったこと無いけど、
C#はクラスデータをserialize化する機能があるから、それでパックしてるんだろうね
となるとポインタ的な何かが必要で、それが無くてNULLなんじゃね?
0339名前は開発中のものです。2014/07/08(火) 19:33:47.74ID:ddu7OeuU
>>338
単純にdataインスタンスにシリアライズしたsettingsクラスとconfigクラスを
入れるメソッドを経由してなかったからみたいです

これって例えばパラメータとかフラグ管理してるコンテナクラスとか
色んなマネージャークラスや敵クラスとか、ロード時読み出したいクラス全部に
System.Serializable ()]属性付けないといけないって事ですよね?
0340名前は開発中のものです。2014/07/08(火) 19:42:19.15ID:GK/wakWz
>>330
ありがとうございます!
確かにおっしゃる通りで、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
とかはピボットの位置と大きくずれてたり

でもだいぶ核心に近づいてきました!
03413332014/07/08(火) 21:23:19.99ID:baCtLp31
>>337
レス番号間違えたけどさっきのは329へのレスね
立方体が動き回っていても位置(position)と回転行列(rotation)が分かれば問題ないはず
衝突点と立方体中心の差分を取って回転行列の逆行列を掛ければ333に書いた状態になる(多分)
03423142014/07/08(火) 22:38:42.03ID:A3tN0KUo
>>337
難しく考えすぎだと思う
hit.pointはワールド座標ですが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;を頭に追加してください)
0343名前は開発中のものです。2014/07/08(火) 22:43:57.76ID:A3tN0KUo
あ、すまん。hitPointLocalは正規化したほうがいいかも
0344名前は開発中のものです。2014/07/08(火) 23:47:44.77ID:GNYY4mLA
>>339
自前でやるのが筋。
とか思っちゃうおれはオールドタイプなのか?

ゲームシーンをごっそりセーブするなら、
Save Game-JSON+Binary
っていうアセットはどう?
0345名前は開発中のものです。2014/07/09(水) 00:59:16.29ID:w8x3TA41
>>344
ありがとうございます。
そのアセット知らないので、ちょっと調べてみます
0346名前は開発中のものです。2014/07/09(水) 06:19:09.35ID:qEp+Q++O
Unity2Dでsin cosを使ってオブジェクトを滑らかにカーブ移動させるのに、
参考になるようなサイトはないでしょうか?
0347名前は開発中のものです。2014/07/09(水) 10:09:57.48ID:kwPBdcPP
>>346
普通に使えばええやん
ゲームで滑らかにカーブ移動させたいならスプラインとかエルミート曲線の方が良くないか?と思わないでも無いけど

どんな移動させたいのか具体的に書いてくれれば幾らでも参考サイトや有用Assetやらコードやら示してやれるがこの質問だけだとどもならんよ
0348名前は開発中のものです。2014/07/09(水) 11:28:06.03ID:CEnQGpTX
>>347
アセットを買えばどもなるよ。
0349名前は開発中のものです。2014/07/09(水) 11:32:48.63ID:kwPBdcPP
>>348
今回の質問には私の知っているAssetがあるが、使っても居ない君には示すこともできないだろうwwww
0350名前は開発中のものです。2014/07/09(水) 12:10:31.54ID:CEnQGpTX
>>349
アセットを買わないと知っているから持っているに変わらないよ。
0351名前は開発中のものです。2014/07/09(水) 12:23:24.35ID:pJQ0Abwo
今日のアセット担当は日本語レベルが低いな
0352名前は開発中のものです。2014/07/09(水) 12:29:16.04ID:UnwO4uOl
だいぶあせっとるんだろう
0353名前は開発中のものです。2014/07/09(水) 12:30:02.63ID:CEnQGpTX
>>351
アセットを買えば理解できるようになるよ。
0354名前は開発中のものです。2014/07/09(水) 12:58:05.82ID:waqeFJ7J
必死にレスしてるw
0355名前は開発中のものです。2014/07/09(水) 15:23:38.35ID:H9+HAVhV
天安門事件
03563092014/07/09(水) 15:44:09.25ID:bOZmpXlN
レス遅くなり申し訳ありません。

>>341
>>342
あ、ローカル座標に変換できるのですか。
確かにそうであれば動き回ろうと関係無い……
お二人はそれ前提で話されてたんですね、難しく考えすぎていました。

コードまで載せてくださってありがとうございます。
実装の参考にさせていただきます。
Linqは知りませんでした。SQLをそのまま書けるイメージでしょうか。
面白そうです。

ありがとうございました!
0357名前は開発中のものです。2014/07/09(水) 16:44:41.03ID:CEnQGpTX
>>356
アセットを買えばもう少し人生の余裕が出来るよ。
0358名前は開発中のものです。2014/07/09(水) 17:05:38.35ID:69aPN37H
>>357
アセットおじさん。
彼女ができるアセットを教えてください。
0359名前は開発中のものです。2014/07/09(水) 17:16:02.29ID:c/2zjphJ
アセットおじさん

オレが寝てても妖精さんが勝手にコードを書いてくれるようになるには
具体的にどのアセットを買えばいいのか教えてください。
0360名前は開発中のものです。2014/07/09(水) 17:20:08.47ID:kwPBdcPP
おじさんの弱いところは358の返しに
ttps://www.assetstore.unity3d.com/en/#!/content/18705
これを貼らないところかww
0361名前は開発中のものです。2014/07/09(水) 18:00:23.83ID:K5w5Fazd
うにてぃちゃん、えらくすさんだトコ住んでるんやな
誰か可愛い部屋つくったれや
0362名前は開発中のものです。2014/07/09(水) 18:09:35.30ID:g5+qSqKX
>>360
3枚目のSSで、もうほとんど
M字開脚&アヘ顔ダブルピースを喚起
0363名前は開発中のものです。2014/07/09(水) 18:27:00.09ID:yYdGlLLJ
ちょっと待って、>>352がなんか言ってる
0364名前は開発中のものです。2014/07/09(水) 18:41:53.55ID:69aPN37H
>>361
とりあえず、これ置こか?

https://www.assetstore.unity3d.com/jp/#!/content/8329
0365名前は開発中のものです。2014/07/09(水) 19:33:46.82ID:CEnQGpTX
>>361
アセットを買えば部屋もつくってもらえると思いますよ。
0366名前は開発中のものです。2014/07/09(水) 19:44:59.75ID:He9lO1nK
珍しくアセットおじさんがまともなこと言った
0367名前は開発中のものです。2014/07/09(水) 19:50:35.88ID:4BHyJEoT
作成した飛行系キャラクターに歩くモーションを適用したら
地面に降りて歩くようになってしまったんですけど
これは足のIKとかが関係してるのでしょうか?
どうやったら浮くようになりますか?
0368名前は開発中のものです。2014/07/09(水) 19:56:04.45ID:X3K0xNpT
animatorコンポーネントの
ApplyRootMotionの項目のチェックをはずす。
0369名前は開発中のものです。2014/07/10(木) 03:37:17.91ID:xx5UL/cu
AというオブジェクトのTransform(ポジションとローテーション)を
BというオブジェクトのTransformに近づけていくのに簡潔な書き方ってないでしょうか
下記のように書いたんですが

float x = Mathf.Lerp(A.transform.position.x, B.transform.position.x, t);.
float y = Mathf.Lerp(A.transform.position.y, B.transform.position.y, t);.
float z = Mathf.Lerp(A.transform.position.z, B.transform.position.z, t);.

float rotationX = Mathf.Lerp(A.transform.rotarion.x, B.transform.rotarion.x, t);.
float rotationY = Mathf.Lerp(A.transform.rotarion.y, B.transform.rotarion.y, t);.
float rotationZ = Mathf.Lerp(A.transform.rotarion.z, B.transform.rotarion.z, t);.

A.transform.position=new Vector3(x,y,z);
B.transform.rotation=new Vector3(rotationX,rotationY,rotationZ);

これだとちょっと冗長すぎて、もっと簡潔な書き方があると思えてなりません
どなたかアドバイス願えますでしょうか
0370名前は開発中のものです。2014/07/10(木) 03:40:59.03ID:xx5UL/cu
あ、コードの最終行は

× B.transform.rotation=new Vector3(rotationX,rotationY,rotationZ);
○ A.transform.rotation=new Vector3(rotationX,rotationY,rotationZ);

でした


というか欲を言うと

A.transform += (A.transform-B.transform)*0.1f

みたいに一行で全て済むのが理想ですが、さすがにこれはないですよね…
03713462014/07/10(木) 05:46:31.66ID:xAErvCZm
>347
レスありがとうございます
2D横シューティングでよくあるような雑魚敵が画面真ん中くらいまで直進した後、
画面内側へ向かってカーブしていく動きを作ろうと思っています
0372名前は開発中のものです。2014/07/10(木) 05:52:23.17ID:2vomgG9s
iTweenを覚えたらいいのに
0373名前は開発中のものです。2014/07/10(木) 07:29:03.59ID:bIU8XwO6
移動中に攻撃したり撃破されたりする処理を書くことを考えたら
自分で移動処理書いたほうがいい気もする
0374名前は開発中のものです。2014/07/10(木) 08:00:45.27ID:9ExPOmiK
>>368
おおっ
そんなに簡単に出来るんですか
ありがとうございました
0375名前は開発中のものです。2014/07/10(木) 09:14:32.54ID:eKSeBp7C
>>369
まぁ

A.transform.position = Vector3.Lerp(A.transform.position,B.transform.position,t*Time.deltatime);
A.transform.rotation = Quaternion.Lerp(A.transform.rotatin,B.taransform.rotation,t*Time.deltatime);

とかだろうな。
0376名前は開発中のものです。2014/07/10(木) 09:14:35.97ID:U1Yt5b0K
>>369
positionに対してはVector3.LerpとかVector3.SmoothDampを使えばいい

rotationはQuarternionだからVector3は使えないし、xyzを線形補間してもスムーズに変化しない
Quarternion.SLerpを使おう
0377名前は開発中のものです。2014/07/10(木) 09:17:10.37ID:/MrudUJp
>>371>>372が答えてくれてるけどiTweenってAsset買うか
https://www.google.co.jp/search?q=Hermite+curve
をググると良い
Unity上の実コードだと
http://wiki.unity3d.com/index.php?title=Hermite_Spline_Controller
ここに実サンプルがある
0378名前は開発中のものです。2014/07/10(木) 12:19:31.02ID:zK1oDZ7N
iTweenってタダだろ
0379名前は開発中のものです。2014/07/10(木) 14:31:24.08ID:YqQyc3Kt
>>372,375,376,367
ありがとうございます!
全部参考にさせて頂きます!
■ このスレッドは過去ログ倉庫に格納されています