トップページgamedev
1002コメント397KB

【3Dゲームエンジン】Unity質問スレッド28 [無断転載禁止]©5ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2016/12/13(火) 22:34:52.47ID:X+rEJddk
3Dゲームエンジン「Unity」の質問に優しく答えるスレです。
質問・回答・お礼以外はスレチなので総合スレでどうぞ
Windows/Mac用。JavaScript/C#といった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他

次スレは>>970を踏んだ方が建てること。ダメなら>>980>>990が建てて下さい。

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

■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
http://www24.atwiki.jp/unity2ch/

●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・マニュアル
 http://docs.unity3d.com/ja/current/Manual/index.html
・チュートリアル
 http://unity3d.com/jp/learn/tutorials
・スクリプトリファレンス
 http://docs.unity3d.com/ja/current/ScriptReference/index.html
・FAQ
 http://unity3d.com/jp/unity/faq
・MSDN
 http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。

前スレ
【3Dゲームエンジン】Unity質問スレッド27
http://echo.2ch.net/test/read.cgi/gamedev/1477131311/
0671名前は開発中のものです。2017/05/05(金) 07:22:32.12ID:EIOVkM5L
>>668
Rigidbodyの継承元であるComponentのこと。
ジェネリックでないGetComponent(Type type)とGetComponent(string type)はその名前の通りComponent型を返す。任意の型にするにはas演算子かキャストが必要。
ジェネリックであるGetComponen<T>()の場合、関数の戻り値の型を指定できるため、Tに指定した型を返す。

https://msdn.microsoft.com/ja-jp/library/ms173149.aspx
https://msdn.microsoft.com/ja-jp/library/twcad0zb.aspx

このレベルの入門書の記述では、C#の基礎を飛ばしていきなりUnityの使い方を書くために曖昧な記述になる
きちんと理解したいならC#の基礎から学ぶしかないが、ここで躓くレベルだとC#の絵本ぐらいしか勧められる本がない
0672名前は開発中のものです。2017/05/05(金) 08:22:21.52ID:DbGMlKNs
>>668
まあそこの記述もうちょっと別の言い方あるだろ感なくもない。
同じインスタンスを表していますが継承元のクラスの型のインスタンスとして返ってきます とか?
この言い方もあれだけど分かる人にはその辺の説明すらいらんだろし分からない人に向けてならちとわかりにくい感はある
0673名前は開発中のものです。2017/05/05(金) 08:24:15.46ID:EIOVkM5L
>>657
方法があるかと言うならある
やり方自体は無数に考えられるのでざっくりどんな方針で作るかを考える必要がある

・接合部が妥協出来るなら千切れる部分でモデルを分割しておくのが楽
・千切れる前のモデルと千切れた後のモデルを差し替える方法もあるし
・実行端末の処理能力に余裕があるなら動的にメッシュを切る事だって可能
0674名前は開発中のものです。2017/05/05(金) 08:34:40.93ID:EIOVkM5L
>>661
仕様変更されたと言っても、さすがに変数宣言でエラーを吐くというのはおかしい
貼ったコードが全文なのなら、おそらくusing UnityEngine.AI; がないのが原因な気がする

※エラーが出ている場合エラーメッセージを貼ってくれ
0675名前は開発中のものです。2017/05/05(金) 09:07:27.29ID:EIOVkM5L
>>656
作れるか?なら作れる
だがそれをやるメリットはない。他人が作ったものが使えるなら使う方が楽に決まってる

読むより自作した方が楽とかいう間抜けな発言を揶揄したいだけなんだろうからこれで充分だろ?
0676名前は開発中のものです。2017/05/05(金) 11:07:48.05ID:+bjXTwY0
>>669
そうですねー
オツムがある人も役たたないレスするんですね

>>670
ですね勉強しますねー
そんくらいのことは読めばわかるんですけどねw

>>671
丁寧な説明ありがとうございます
非常に腑に落ちました
ベースクラスを返すGetComponentが先にあって、その改良型?がジェネリック版という扱いなのですかね〜

>>672
そうなんですよね
曖昧な説明しかしないなら気になってしまうから触れないでほしい
0677名前は開発中のものです。2017/05/05(金) 14:34:07.65ID:FCq9edHd
>>676
バカだな
そんな姿勢ではこの先やっていけまい
0678名前は開発中のものです。2017/05/05(金) 14:40:50.84ID:+bjXTwY0
>>677
貴重なご意見ありがとうww
0679名前は開発中のものです。2017/05/05(金) 16:14:40.69ID:RMWl1+tY
本については出版社に聞けば教えてくれる
教えなかったらその作者はクズだから拡散しまくれ
もう本が出せなくなるから
0680名前は開発中のものです。2017/05/05(金) 18:09:30.47ID:AnaMeTgN
>>674
言われたとおりusing UnityEngine.AI;を追加したところ、エラーが無くなりました。
ありがとうございます!
次からはエラーメッセージを貼るようにします。
0681名前は開発中のものです。2017/05/05(金) 18:14:46.90ID:FX+F7YYo
スクリプトやコンソールダブルクリックするたびVisual Studio起動されるんだけど
複数起動されないようにできなかったけ?
0682名前は開発中のものです。2017/05/05(金) 18:38:21.38ID:FX+F7YYo
.slnファイル削除でいけたすまん
0683名前は開発中のものです。2017/05/05(金) 20:38:06.99ID:giehzT3A
Unityを今日知って始めようと思ったものですが参考書は何がいいでしょうか?
まだ大学生でunityの知識は全くの0です
0684名前は開発中のものです。2017/05/05(金) 20:39:35.72ID:giehzT3A
後C#については基礎しか分かってないです
printf("");とかfor文とかそのぐらいです
0685名前は開発中のものです。2017/05/05(金) 21:30:27.26ID:yFsR8M1v
>>684
初めてのunityとか言う本を読んでみてください。
0686名前は開発中のものです。2017/05/05(金) 21:45:27.17ID:XZdGkeiv
プレファブのInstantiateについて質問させて下さい、例えば下記コードがあります。

public class Sample : MonoBehaviour
{
private int count;
//外部からプレファブを読み込む
public GameObject prefab;

void Start()
{
this.Fukusei()
}

private void Fukusei()
{
float y_float = 5.0f;
count = 3
//ループでプレファブを3体実体化
for(int i = 0; i < count; i++)
{
y_float = y_float + 2.0f;
Vector3 move = new Vector3(0f,y_float,0f);
GameObject c_prefab = Instantiate(prefab,move,Quaternion.identity)
as GameObject;
}
}
}
上記コードを実行させた所、1体しかオブジェクトが生成されませんでした。
ループ処理で複数オブジェクトを生成するにはどうすればよいのでしょうか?
知恵をお貸しください、よろしくお願いいたします。
0687名前は開発中のものです。2017/05/05(金) 21:52:23.90ID:rv6i1zkK
>>684
とりあえずC#の絵本
大学で体系立ててクラス、継承の概念を教えてくれてるなら公式のチュートリアルを進めるのが一番良い
0688名前は開発中のものです。2017/05/05(金) 22:00:38.41ID:xxiP9vkK
>>686
あっているかわからないけど
c_prefabに上書きされているからかな
なくすか、一つづつ代入
0689名前は開発中のものです。2017/05/05(金) 22:29:40.41ID:3mck4Sa2
>>686
セミコロンが2つ欠けてるからコンパイル通ってないと思われる
0690名無し@キムチ2017/05/05(金) 23:50:12.90ID:AtSts0Wv
ここ読むとみなさんは随分先に進んでいて、初心者の当方は遅れを感じてあせりますなあ…
今日は当方はヨナちゃんに3種類のキックをモーションをつけたのですが、1種類ごとにどこか間違っていて、ちゃんとつくのに随分時間がかかってしまいました。
まだモーションが足りないから、満足いく物語はつくれないなあ…
明日はどんなモーションをつけようかなあ?
0691名前は開発中のものです。2017/05/06(土) 00:25:40.56ID:GohnxSff
ここはてめえの日記帳じゃねえんだ
気持ち悪いキャラ付け含めてよそでやってろ
0692名前は開発中のものです。2017/05/06(土) 07:09:35.34ID:0d99tECI
>>686
ヒエラルキーにオブジェクトは1つ?
かなり大きいオブジェクトで重なっててわからないとかは無いか。とりあえず。
0693名前は開発中のものです。2017/05/06(土) 08:06:40.21ID:U+8B+lMF
this.transform.rotation *= Quaternion.AngleAxis(holizontal, transform.up) * Quaternion.AngleAxis(vertical, transform.right);
this.transform.Rotate(vertical,holizontal,0);

下の文の処理を上の文で行おうと思ったのですが挙動がおかしいです
何が問題なのかわかりますか?
0694名前は開発中のものです。2017/05/06(土) 09:09:35.52ID:aF88SVn+
>>688,>>689,>>692 さん、回答ありがとうございます。

実は、上記のスクリプトコードは上手く動いていて

別オブジェクトにアタッチしているスクリプトコードが原因で
上手く動かなかっただけでした。

エラーは表示されず、1体だけ表示されていたので
上記コードが原因だと思い込んでいました。
現在、他のコードを修正して、思い通りの表示はできました。

みなさん、ご迷惑をお掛けしてすみません。

※補足

;抜けですが、コードをコピペした後に、コメントを消したり、改行したりしたので
一部;が抜けてしまいました。

ループしてc_prefabに3回GameObjectがコピーされますが
こちらは動作上では問題ありませんでした。

ヒエラルキーにオブジェクトは1つです
大きい場合は、重なってて気づかない時もあるので、注意します
0695名前は開発中のものです。2017/05/06(土) 10:54:18.31ID:FLUPXrMJ
>>693
アセットを買えばわかると思うんですが
0696名無し@キムチ2017/05/06(土) 20:39:09.54ID:Ixg0NR17
アセットストアの有償のアセットってドルで売られているけど、アメリカの銀行に口座作らないと購入できないのですか?
0697名前は開発中のものです。2017/05/06(土) 20:54:44.75ID:f3wyd39v
クレカでOK
0698名前は開発中のものです。2017/05/06(土) 21:51:45.59ID:8DQf0qQ8
PayPalでもいいよ
0699名前は開発中のものです。2017/05/07(日) 09:26:45.72ID:uJs6OOqI
基本的なことだと思うのですが、複数のパーティクルを同時にプレビューする方法を教えてください

購入した他人のプレハブをシーンに配置すると複数のパーティクルを同時に再生しているのが判りますが、
これはどのようにしているのでしょうか?
0700名前は開発中のものです。2017/05/07(日) 13:28:03.49ID:7oApjb+W
親子かな
0701名前は開発中のものです。2017/05/07(日) 13:42:55.88ID:MlRUI8Ep
子に突っ込んだら同時じゃね?
0702名前は開発中のものです。2017/05/07(日) 14:13:41.81ID:14rtgphl
すごい初歩的な質問なんですが
Unityをインストールして
後日Unityをインストールしたパソコンにグラボを増設しても
Unityを再インストールする必要ってないですよね?

Unityが保存されているのがHDDやSSDで
グラボは映像描写なので大丈夫だとは思うのですが
なにぶんパソコン関係に疎く自分の考えに自信が持てないので
教えていただければと思います
0703名前は開発中のものです。2017/05/07(日) 14:33:22.97ID:Jjo3bxMR
アンインストールしてまたインストールしたほうがいいでしょう
0704名前は開発中のものです。2017/05/07(日) 15:32:50.53ID:eeWZXSFZ
>>702
不安なら、まずはグラボのドライバをクリーンアンインストール&再インストールするといい
大体そのまま動くんじゃない?

それでトラブったら、グラボドライバのバージョン調整、Unity再インストール、OS再インストール試すべし
自分の運を呪え
0705名前は開発中のものです。2017/05/07(日) 16:33:42.81ID:fxHQ1qjP
今ゲームを作っています
このゲームではスコアをネットにアップロードして他のプレイヤーと
競え合える機能をつけようと思っています
そのためのアセットでdreamloというものをインポートして使っています
dremloというのはdreamloのサイトurlに命令の文字列や数値などをつけて送ったら
dreamloのサイト上の自分のページにその数値が記録されるというサービスです
で、ビルドも成功してローカルでは完全な形で機能していてネットにも接続できてます
でもそれをunityroomというunityのwebglゲーム用のサイトにアップロードしたところ
ネット接続ができなくなりました
chromeとfirefoxで試したのですが両方エラーになりました
http://i.imgur.com/DsSeTQ2.png
これがchromeのブラウザ上でチェックした時のエラー部分です
http://i.imgur.com/1IM6dZi.png
こちらがfirefoxでネット接続を試みた時に出るダイアログです
firefoxの方はこのまま画面が止まってしまいました
私はネットの知識に疎いので何がどうダメなのかさっぱりわかりません
どういう問題があると予想されるのかヒントをいただけませんでしょうか?
0706名前は開発中のものです。2017/05/07(日) 17:34:27.06ID:JQdRFx86
>>705
エラーの英文ぐらいは読もうな
httpsのセキュリティ保護されたページからhttpでセキュリティ保護されていない通信をしようとしているため、このリクエストがセキュリティ的にNGであるとしてブラウザによってブロックされている
0707名前は開発中のものです。2017/05/07(日) 17:42:28.74ID:fxHQ1qjP
>>706
それは読んだんですがそれがどういう意味なのかよくわからなくて。
untyroomのサーバはhttpsのurlなんですよね?
で、dreamloはhttpと
この場合unityroomからdreamloへアクセスするにはどういう方法が
あるのでしょうか?
0708名前は開発中のものです。2017/05/07(日) 18:02:23.90ID:EjPgrCun
dreamlo側が対応しないと無理なんじゃないか
0709名前は開発中のものです。2017/05/07(日) 18:03:05.14ID:CJYUf01h
>>707
他のアセットを買ってみましょう。
きっと道が拓けると思いますよ
0710名前は開発中のものです。2017/05/07(日) 18:13:45.21ID:fxHQ1qjP
>>708
そうなんですかね
困ったなぁ
自分でも調べてみます
0711名前は開発中のものです。2017/05/07(日) 18:14:47.49ID:co61ccwl
Update()
{
if(true){
Cube.renderer.material.SetColor ("_Color", Color.red);
}
if(true){
Cube.renderer.material.SetColor ("_Color", Color.white);
}
}

2つのtrueのコードで実行内容がぶつかった場合、
このupdate関数の中でも一瞬でも赤に変わることもなく
下の方に書かれたコードが優先されるのは何故でしょうか?
0712名前は開発中のものです。2017/05/07(日) 18:19:09.79ID:Jjo3bxMR
そういうものだからです
0713名前は開発中のものです。2017/05/07(日) 18:25:13.30ID:L02Q1q1N
>>693についてわかりませんか?
0714名前は開発中のものです。2017/05/07(日) 18:31:17.75ID:G1j9ioGV
そんな難しい問題に答えられる奴はいない。
Twitterで有能なエンジニアと知り合いになって聞いて見たまえ
0715名前は開発中のものです。2017/05/07(日) 19:19:56.92ID:LwPLrk9L
>>707
とりあえずブラウザのセキュリティレベルを落としてみれば?
例えばFirefoxなら、許可サイトに追加してみるとか。

>>713
とりあえず1行目の掛け算の前後を逆にしてみれば?

デバッグなんてとりあえずでやってみりゃいいんだよ!
0716名前は開発中のものです。2017/05/07(日) 19:47:14.02ID:CJYUf01h
>>711
アセットを買えばわかると思います
0717名前は開発中のものです。2017/05/07(日) 20:19:44.18ID:nyIgqpMk
ありがとうございます
知り合いのUnityユーザーに聞いてみます
0718名前は開発中のものです。2017/05/07(日) 20:45:50.64ID:MGcd9AoN
>>711
処理速度が速いので、切り替わってるのが認識できない。
whileで100回繰り返しても一瞬で最後の色が表示される。
スタートコルーチンと
yield return new WaitForSeconds(0.02f);
で処理を遅らせると、切り替わるように表示させることができます。
0719名前は開発中のものです。2017/05/07(日) 21:09:57.21ID:baCk0ayQ
>>711
フレームバッファの描画が終わってから画面に反映されるから、反映途中は見えないようになってる。
0720名前は開発中のものです。2017/05/07(日) 22:31:46.26ID:JQdRFx86
>>711
後者が優先されているというわけではなくどちらのコードも実行されている
ただ赤くした直後に白くするコードが実行されているためレンダリングする時点では常に白くなっているというだけ
Updateやレンダリングの実行タイミングについては下のページのフローチャートを参照
https://docs.unity3d.com/ja/540/Manual/ExecutionOrder.html
0721名前は開発中のものです。2017/05/07(日) 23:43:33.21ID:JQdRFx86
>>693
現在の回転(transform.rotation)に、現在の回転の軸を基準にした回転(Quaternion.AngleAxis)をかけてるから現在の回転が2重に計算されてるんじゃない?

transform.Rotate(x,y,0);はtransform.rotation*=Quaternion Euler(x,y,0);と等価
Quaternion Euler(x,y,0);はQuaternion.AngleAxis(y, Vector3.up) * Quaternion.AngleAxis(0, Vector3.right);と等価

よってtransform.upとtransform.rightをVector3.upとVector3.rightに書き換えれば行ける…と思うが確認はしていない、多分いけると思う
0722名前は開発中のものです。2017/05/07(日) 23:45:36.05ID:JQdRFx86
誤:
Quaternion Euler(x,y,0);はQuaternion.AngleAxis(y, Vector3.up) * Quaternion.AngleAxis(0, Vector3.right);と等価
正:
Quaternion Euler(x,y,0);はQuaternion.AngleAxis(y, Vector3.up) * Quaternion.AngleAxis(x, Vector3.right);と等価
間違えたすまん
0723名前は開発中のものです。2017/05/07(日) 23:52:38.95ID:JQdRFx86
更に間違えてるな
誤:Quaternion Euler(x,y,0);
正:Quaternion.Euler(x,y,0);
ゴロゴロしながらスマホでコード入力とかしちゃいかんね、テキトーですまん
0724名前は開発中のものです。2017/05/08(月) 06:27:18.66ID:/rxlirAw
質問失礼します
XBOXコントローラの入力設定をしていたのですが
LTとRTが同じ値を扱うので「LT押して構えながらRTで攻撃」みたいな処理が出来なくて困ってます
具体的にはLTを押すと-1、RTを押すと1、どちらも押さないか両方押すと0になります

どうにかして先程のような処理が出来る方ご存じないですか?
0725名前は開発中のものです。2017/05/08(月) 06:52:07.02ID:wuujaGy4
>>721
丁寧な回答ありがとうございます!
0726名前は開発中のものです。2017/05/08(月) 10:09:23.66ID:O3lg13tL
>>718
>>719
>>720
わかりやすい解説ありがとうございました。
0727名前は開発中のものです。2017/05/08(月) 12:52:49.28ID:iZefHD7L
昨日の>>705この者ですが
結局webglビルドはネットランキング対応やめにしました
dreamloのサイトをよくみてみたら「httpsに対応できますよ。そのためには
5ドルの寄付が必要です」と書いてありました
で、寄付しようと思ったんですけどどうも日本からの寄付には対応してないようなのです
仕方ないのでそれは諦めました
それで質問なのですが皆さんはネットランキングに対応するのにどういう手法を使っていますか?
他の人のやり方がヒントになるかもしれないのでお教えいただけないでしょうか
0728名前は開発中のものです。2017/05/08(月) 13:58:55.17ID:uP7SRH0d
参考になる気はしないが俺は自前で全部やってしまうよ
無料のレンタルサーバー借りて
PHP(言語、C#よりは楽だよ)で作った自作のランキングCGI(サーバー側で動くアプリみたいなもん)を設置して
Unityからその自作のランキングCGIへアクセスする

PHPはWebサイトに掲示板やアクセスカウンターを作る言語で
掲示板やアクセスカウンターの作り方の応用でランキングプログラムも作れる

dreamloとやらがやってることを全部自分で作ってしまう感じ

PHP使える人なら半日で出来るし
PHP使えなくてもUnityでC#をバリバリやってるのなら3日〜1週間くらいで出来るとは思う
0729名前は開発中のものです。2017/05/08(月) 14:02:48.98ID:iZefHD7L
>>728
いえいえ
参考になりました
実はphpがいいんじゃないかとは最近調べ始めて考えてました
やっぱりサーバサイドの知識があれば自由度が増しますもんね
phpやってみようかな
0730名前は開発中のものです。2017/05/08(月) 14:05:02.48ID:L2rmtk1s
いいからUnite行けよお前ら
0731名前は開発中のものです。2017/05/08(月) 14:16:03.74ID:e4WmfSW2
PHPを書けることよりも、必要に応じてdreamloとかのサービスを探してきてササッと組み込む能力の方が大事
0732名前は開発中のものです。2017/05/08(月) 14:40:28.43ID:t412r4No
自前でサーバを建てる場合、メンテナンス費用を含むランニングコストの問題も出るしな
過疎っても空振りに終わってもゲーム本体とランキング機能が生きてる限り支出が発生してしまうのは避けたい

自前で作るより低コストで運用可能で、要件を満たすのであれば外部のサービス使う方がいいわ
0733名前は開発中のものです。2017/05/08(月) 14:46:15.74ID:iZefHD7L
>>732
外部のサービス色々探したんですけど
ほとんどある一定の通信料になると追加料金が発生したりするものとかばかりで
使いにくいんですよね
その点自前サーバではサーバの料金だけですし
0734名前は開発中のものです。2017/05/08(月) 18:15:47.61ID:+HOnwGdi
>>730
YOUTUBEで事足りる
0735名前は開発中のものです。2017/05/08(月) 19:03:09.93ID:t412r4No
>>733
サービスによりけりだがサーバ維持コスト以上の課金が必要なほどのアクセスが発生するなら、自前サーバだって可用性の担保やら冗長化やらでそれなりにコストが増える
コスト増を嫌ってスケールアウトしないとサーバダウンしてランキングつかえない早く直せでレビュー炎上コース
0736名前は開発中のものです。2017/05/08(月) 23:08:59.94ID:gjXXhm67
androidだったらgoogle game、iOSならgame center使えばサーバーなしでランキング機能使えるけど、PCだとそういうサービスがあんましないのか。
0737名前は開発中のものです。2017/05/08(月) 23:19:08.86ID:KJyawaT7
かかる金心配するようなアクセスあるの?
0738名前は開発中のものです。2017/05/09(火) 02:52:23.75ID:k0+dT0qz
3Dゲーム開発初めての者です

Blenderを使用して人型の3Dモデルを作成してRigifyでボーンを入れ
Humanoidのアニメーションタイプで再生させる所までは出来たのですが
Rigifyで生成されるボーン以外に新規にボーンを追加したいです
ですがアニメーションが崩れるなどで困っています

Humanoidのアニメーションタイプのボーン数は可変には出来ないのでしょうか?
Genericなど他のアニメーションを採用しないといけないのでしょうか?
0739名前は開発中のものです。2017/05/09(火) 09:37:28.03ID:pBw3qVGD
public Transform player, playerCamera, centerPosition;
private float mouseX,mouseY;
public float mouseSpeed = 10f;
public float mouseYPosition = 1f;
private float moveFB,moveLR;
public float moveSpeed = 2f;
public float rotationSpeed = 5f;
private Vector3 move = Vector3.zero;
private float rotations = 180.0f;
void Update () {
Zoom ();
Move ();
}
void Zoom(){
カメラ操作なので省略
}
void Move (){
moveFB = Input.GetAxis ("Vertical") * mouseSpeed;
moveLR = Input.GetAxis ("Horizontal") * mouseSpeed;
move = new Vector3 (moveLR,0,moveFB);
player.GetComponent<CharacterController> ().Move (move*moveSpeed*Time.deltaTime);
centerPosition.position = new Vector3 (player.position.x,player.position.y + mouseYPosition,player.position.z);
Vector3 playerDir = move;
if(playerDir.magnitude > 0.1f){
Quaternion q = Quaternion.LookRotation(playerDir);
transform.rotation = Quaternion.RotateTowards(transform.rotation , q , rotationSpeed * Time.deltaTime);
}
スクリプトでやりたいことはカメラ、プレイヤー、プレイヤーの頭上を指定してカメラがプレイヤー周りを回転、ズーム。プレイヤーがダークソウル、PSO2のように方向キーで入力した方向に移動する、ということでした。
ですが実行したところカメラの操作は出来たのですがプレイヤーは方向キーの方向を向いて移動せず、その後も色々調べたのですが解決には至らずご質問させて頂きました。
もう一つ、方向キーの方向へ移動するスクリプトを探す時、主に「Unity 方向キー 移動」と検索していましたがこの操作を検索する時はどのような言葉で検索するべきでしょうか?
ゲームに関わる用語には疎く初歩的な質問で申し訳ありません。よろしくお願いいたします。
0740名前は開発中のものです。2017/05/09(火) 10:26:02.69ID:jPne5KPu
そんな難しい質問に答えられる人はいない
エンジニアと知り合いになって聞いて見たまえ
0741名前は開発中のものです。2017/05/09(火) 11:39:51.32ID:N75Uh4KE
>>739
私も初心者ですが、
ワールド座標ではなく現在のカメラの方向を移動の基準にしたいのであれば以下が参考になるかも
http://tech.pjin.jp/blog/2016/11/04/unity_skill_5/
0742名前は開発中のものです。2017/05/09(火) 12:20:25.66ID:V6iBeyHh
Environmentをインポートしたら「speedtree materials need to be regenerated」
って表示されたんですがどういうことですか?
0743名前は開発中のものです。2017/05/09(火) 12:34:03.57ID:Mbl8vaYC
>>738
https://forum.unity3d.com/threads/humanoid-rigs-and-extra-bones.360979/
同様の質問に公式の回答がついてるので読むべし
0744名前は開発中のものです。2017/05/09(火) 12:44:59.60ID:hl5esBj9
>>742
英語を勉強してください
0745名前は開発中のものです。2017/05/09(火) 13:00:25.62ID:oS/HVu/P
親子かな
keycodeかな
0746名前は開発中のものです。2017/05/09(火) 13:15:52.69ID:B5ZGB86U
>>739
ワールド座標とローカル座標の勉強をする事。
それが腑に落ちれば、キャラの正面方向に加算するだけでどんな方向を見ていても、正面方向に進んでくよ。
transform.localPotision.z
0747名前は開発中のものです。2017/05/09(火) 13:37:01.85ID:YlWa+vc7
>>742
アセットを買えばわかると思います
0748名前は開発中のものです。2017/05/09(火) 14:05:37.97ID:Mbl8vaYC
>>739
CharacterController.Moveはキャラクターのローカル座標を基準にキャラクターを動かすよって入力をそのまま渡すとラジコン操作になる

カメラ=現在見ている画面 を基準に動かしたい場合
入力をカメラのローカル座標系におけるベクトルとし、これをキャラクターのローカル座標系におけるベクトルに変換する必要がある

よって、わかりやすくやるなら以下のような変換をすればCharacterController.Moveに渡せる形になる。

move=Camera.main.TransformDirection(move);//一旦ワールド座標系に変換
move=player.InverseTransformDirection(move);//プレイヤーのローカル座標系に変換
0749名前は開発中のものです。2017/05/09(火) 15:00:45.17ID:k0+dT0qz
>>743
ありがとうございます
参考にさせて頂きます
0750名前は開発中のものです。2017/05/09(火) 16:13:06.68ID:YVT3Yiln
すみません、質問です。
自身のオブジェクトのスクリプト操作で自身以外の二つのオブジェクトを衝突させたときの処理はどうすればいいのでしょうか?

OnCollisionEnterでやったら引数がよく分からないことになりました。
0751名前は開発中のものです。2017/05/09(火) 16:16:26.65ID:hl5esBj9
http://kdey.cocolog-nifty.com/blog/2011/11/coliderscript-a.html
0752名前は開発中のものです。2017/05/09(火) 17:16:30.81ID:Mbl8vaYC
>>748
ごめんこれ間違い、下が正解
move=Camera.main.transform.TransformDirection(move);//一旦ワールド座標系に変換
move=player.transform.InverseTransformDirection(move);//プレイヤーのローカル座標系に変換
0753名前は開発中のものです。2017/05/09(火) 19:07:59.68ID:e6cTPFg1
始めたばかりの素人ですが、質問よろしくお願いします
Terrainを適当に生成して、その上にCharacter Controllerで管理したキャラを動かしてます
ほぼ垂直な地形に向かってジャンプすると↓のように壁の途中で引っかかります
http://f.xup.cc/xup8bxqhnlf.png

さらにジャンプを繰り返すと、このほぼ垂直な壁でも登れてしまいます
どうすれば壁に引っかからないか、ずり落ちるか出来るでしょうか?
0754名前は開発中のものです。2017/05/09(火) 19:10:14.54ID:hl5esBj9
>>753
連続ジャンプを防ぐにはジャンプの発動に条件を設ければよい
あと最初からCharacterControllerを使うのはオススメしない、フロントエンドの一番大事な場所をすっ飛ばすことになる
0755名前は開発中のものです。2017/05/09(火) 20:39:01.40ID:e6cTPFg1
>>754
回答ありがとうございます!
実はこれより前にRigidbodyとCapsuleColliderを使って動かしていて、>>753の問題はなかったのですが
↓の様に地形のちょっとした凹凸部分でめり込んだり出たりと繰り返して、挙動がおかしくなってしまいます
http://f.xup.cc/xup8crjizbd.gif

そこでCharacter Controllerに変更したのですが
アクションゲームならやっぱりRigidbodyにするべきですか?
0756名前は開発中のものです。2017/05/09(火) 20:49:33.80ID:hl5esBj9
エンジニアを目指してるなら使わない方がいい
そういう挙動の修正も仕事の内だし、キャラの移動系は一度は自分で一から組んでおくべき
CharactorControllerの中身がどういう処理をして自然な動きになっているのかを知らずに進むのは危険

ゲームデザイナーを目指していてレベルデザインだけをしたいというのなら大いに使えばいいと思う
0757名前は開発中のものです。2017/05/09(火) 21:26:34.63ID:pBw3qVGD
>>741>>746>>748>>752
返信が遅れてしまい申し訳ありません。ありがとうございました。
少ししか出来てませんが助言通りに座標関連を見直して色々スクリプトを弄ったところキー方向を向いて移動させることができるようになりました。
修正後(centerPositionの移動を分けました)
void Update () {
Zoom ();//省略
Move ();
Center ();
}
void Move (){
moveFB = Input.GetAxis ("Vertical") * mouseSpeed; //@
moveLR = Input.GetAxis ("Horizontal") * mouseSpeed;//@

move = playerCamera.transform.TransformDirection(move);//A
move = player.transform.InverseTransformDirection(move);//A
move = new Vector3 (moveLR, 0, moveFB); //B
if (move != Vector3.zero) {  //
player.transform.rotation = Quaternion.LookRotation(move);//キー方向を向く
}
}
void Center(){
player.GetComponent<CharacterController> ().Move (move * moveSpeed * Time.deltaTime);
centerPosition.position = new Vector3 (player.position.x, player.position.y + mouseYPosition, player.position.z);
}
カメラの正面=プレイヤーの正面は出来ておらず、実行するとワールド座標をベースに動いています。
まだ途中ですが、結果的にAで座標変換してもBが影響を受けていない@のみで動いているのでそこを上手くAと合わせるようにスクリプトを書くつもりです。ありがとうございました。
0758名前は開発中のものです。2017/05/09(火) 21:40:16.71ID:E9gMEeC8
質問です
OnTrrigerEnter2Dで当たったCollider2Dと当たられたCollider2Dのそれぞれpositionを求めたいのですが、どこを参照すればいいのでしょうか?
よろしくお願いします
0759名前は開発中のものです。2017/05/09(火) 21:44:19.66ID:hl5esBj9
>>758
検索はしましたか?検索してから質問してください
0760名前は開発中のものです。2017/05/09(火) 21:54:32.51ID:E9gMEeC8
>>759
検索はしましたがいまいち試してもうまくいきませんでした。
オブジェクトの子にCollider2Dがついていてそれが接触しているのですが、引数のcollision.transform.positionで取得しても親の座標が出てしまいます。
プレハブ化して同じオブジェクト同士を接触させています。
0761名前は開発中のものです。2017/05/09(火) 21:57:39.39ID:YoMeUF+A
>>760
どう検索したか書いてください
0762名前は開発中のものです。2017/05/09(火) 22:07:19.37ID:E9gMEeC8
>>761
Collider2DやOnTrrigerEnter2Dなどのリファレンスやブログ等の解説記事を探しましたがそのCollider2Dの座標について記述しているものは見つけられませんでした。
引数のcollisionが当たられた方のCollider2Dだと認識していますが間違っていますか?
0763名前は開発中のものです。2017/05/09(火) 22:07:41.06ID:EHqSe03G
>>695
買ってみます
0764名前は開発中のものです。2017/05/09(火) 22:07:45.79ID:BB63aHHh
>>758
衝突した箇所の座標ではなく、衝突したオブジェクトの座標(中心点)なら、衝突でネーム取得してポジション取得するだけやん?
衝突箇所ならhitだっけ?で検出するのでは?
0765名前は開発中のものです。2017/05/09(火) 22:11:16.22ID:E9gMEeC8
>>764
同じオブジェクトをプレハブ化して複数出しているので同名のオブジェクトが複数存在してしまい正しいオブジェクトを取得できない状況です。
0766名前は開発中のものです。2017/05/09(火) 22:14:34.39ID:e6cTPFg1
>>756
まだまだ基礎を理解していなく調べ足りないようなので、少しずつ調べながらやってみます
ありがとうございました!
0767名前は開発中のものです。2017/05/09(火) 22:20:03.58ID:YoMeUF+A
>>761
検索ワードを書け
0768名前は開発中のものです。2017/05/09(火) 23:52:40.09ID:k0+dT0qz
BlenderでシェイプキーをFBXでエクスポートしてUnityでHumanoidでアニメーションさせたいのですが
対象のSkinned Mesh RendererのインスペクターにShape keyの配列が全く表示されません

ミラーなどは適用済みにしてシェイプキーを作成して、FBXでバイナリやASCIIでエクスポートしてみたのですが変化せず
UnityとBlenderで連携周りの仕様がネットの情報が錯綜しており、イマイチちんぷんかんぷんです

Unity5.5.2f1(バージョンで仕様が変化した?)
Blender2.77

不足している情報等あれば指摘していただければ回答致します
情報足らずかもしれませんが宜しくお願い致します
0769名前は開発中のものです。2017/05/10(水) 08:00:29.27ID:XRNd4lXg
わかんねーけどFBXがダメポそうだね
他のフォーマットでエクスポートしてみたら?

AlembicやOSDとか…
0770名前は開発中のものです。2017/05/10(水) 08:36:45.24ID:v3ig5uFN
そんな難しい質問に答えられる人はいない
Blenderスレで聞いて見たまえ
■ このスレッドは過去ログ倉庫に格納されています