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

■ このスレッドは過去ログ倉庫に格納されています
1名無し@キムチ
垢版 |
2017/10/30(月) 05:05:35.00ID:xnHTCaF3
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他

次スレは>>950以降にできるだけ早く(できれば回答者が回答した後にでも余裕を持って)建てて下さい。

■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質問スレッド31
https://mevius.5ch.net/test/read.cgi/gamedev/1504366121/
2017/12/10(日) 20:23:19.38ID:hR3NFn4T
スクリプト(コンポーネント)は同じとこに書いてないもんは知りませ〜ん
2017/12/10(日) 20:46:48.97ID:s1u45m25
>>745
とりあえず「他のスクリプトのメソッドを使う unity」で検索してみろ。それで理解できなかったら向いてない
2017/12/10(日) 21:11:13.87ID:gqP0KwJW
>>745
言語知識がある程度でもあるならまだしもそうじゃないなら基本的には何も省略しないで
2017/12/10(日) 21:35:27.73ID:s0gCGNcz
だから、アセットを買えばいいんですよ
スクリプト出来なんでしょ?
2017/12/10(日) 22:14:38.78ID:s1u45m25
>>741
静的じゃないから〜ってエラーを見て、staticおじさんになっちゃったのか。
そのエラーの意味は「君が使おうとしているモノは最初から存在しない(静的でない)のでなんとかしてください」って意味だから「staicにしろ」って意味じゃないぞ
751名前は開発中のものです。
垢版 |
2017/12/10(日) 22:16:05.06ID:51pDRWFr
>>747
>>748
>>750
ありがとうございます。
アタッチするオブジェクトに関連してないとアタッチしてはいけないと勝手に思い込んでいました。

>>741で言えば
カメラなりなんなりにBscriptをアタッチして
StartCoroutine(カメラ.GetComponent(Bscript).Bfunction());
って感じにすればよかったんですね
2017/12/10(日) 22:41:19.18ID:s1u45m25
>>751
目標がありそれに向かってコーディングしてることは分かりますし、それは上達への近道です。しかしあなたの書いているコードはあまりにも支離滅裂なので簡単な内容からしっかり学習してください。他のスクリプトのコルーチン使うとかめんどくさすぎて頭おかしいです
2017/12/10(日) 23:01:38.15ID:hR3NFn4T
まあプログラムなんて技量あげるうちに過去コードを色々短縮出来るのが楽しいから…
2017/12/10(日) 23:47:55.77ID:CuU55Myq
もともとは、AsstesフォルダにあるPrefabを、スクリプト上で呼び出したかっただけだよね?
Sceneに配置していないPrefabを、GameObjectとして呼び出したいんだよね??

例えば、SceneにPlayerキャラクタが既にいて、ボタン入力に応じて、
Assets内にあるShotキャラクタを呼び出して、弾丸として発射するみたいな・・・
2017/12/11(月) 00:11:47.56ID:SkZjimvo
<スクリプトAで、Assets内のプレハブBを、ゲームオブジェクトCとして取得する方法>

Scece上に配置したゲームオブジェクトXに、下記のスクリプトAを登録しておきます。

public class A : MonoBehaviour {
 public GameObject B;

 // Use this for initialization
 void Start () {
  GameObject C = (GameObject)Instantiate(B);
 }
}

Inspector上でゲームオブジェクトBを登録できるので、
Assets内のプレハブBを登録しておきます。
「Assetss」を押すと一覧が出ます。

動的にBのインスタンスを生成して、ゲームオブジェクトCとして格納します。
以下、Inspector上で登録しておいたゲームオブジェクトBは、
ゲーム内ではゲームオブジェクトCとして実体化されているので、
移動させたり、回転させたり、いろいろできます。
2017/12/11(月) 00:30:42.08ID:SkZjimvo
C = (GameObject)Instantiate(B)
だと、スクリプトを登録したオブジェクト上に生成されてしまいます。

生成される際の
 位置を、Vector3 V = new Vector3(x, y, z)
 向きを、Quaternion Q = Quaternion.Euler(angleX, angleY, angleZ)
 親を、transform T = parent.transform
としたい場合は、

C = (GameObject)Instantiate(B, V, Q, T)
とします。

親Tの子として、向きQで、位置Vに、
Bのインスタンスが、オブジェクトCとして生成されます。

BにRigidbodyを登録しておけば、
Rigidbody D = C.GetComponent < Rigidbody2D >
によって、CのコンポーネントからRigidbodyを取得して、
変数DにRigidbodyを格納しておくこともできます。

以降は、物理演算ができるようになり、
D.velocity = new Vector3(vx, vy, vz)
のようにして速度を変更したりできます。
2017/12/11(月) 00:39:32.37ID:SkZjimvo

Rigidbody D = C.GetComponent < Rigidbody2D >


Rigidbody D = C.GetComponent < Rigidbody >

普段、2Dばっかりやっているから間違えた・・・

要するに、
@Hierarchyになくても、Assetsからでも呼び出せる
(GameObject.Findは、Scene内から探すためダメです)

AStaticにしなくても、Inspector上からPrefabを登録できる
(Inspector上で設定したかったら「public」です)

Bスクリプトを登録する相手は、何でも良い
(カメラでも、空のオブジェクトでも・・・)

 ただ、あるキャラクタから発射するつもりなら、
 そのキャラクタにスクリプトを登録しておけば、
 発射位置が、そのキャラクタの現在地になります。
758名前は開発中のものです。
垢版 |
2017/12/11(月) 07:52:58.63ID:Lx/f51q7
レベルデザインしてるんですが、フリーでおすすめのアセットパックってないですか?
人工物や自然物がそれなりに入ってるのがほしいですが
2017/12/11(月) 11:46:03.41ID:QvFVBkNr
>>758
フリーアセットではなく、有料アセットを購入しましょう
2017/12/11(月) 13:13:39.39ID:xcDA2XWm
車の排気ガスでパーティクルを使おうと思ってます
車の後方から煙が出る形にしたいんですが、

1 車のオブジェクトにパーティクルをaddして良いのか
2 どうやってパーティクル位置を変更するのか(車の後方に)

の最初の2点で躓いてます
どなたか教えて頂きたいです。
2017/12/11(月) 13:18:21.91ID:HEOTRILb
車に空の子オブジェクトを追加してそこにパーティクルを追加すればいいべ

そういうことじゃなくて?
2017/12/11(月) 13:52:42.53ID:QvFVBkNr
>>760
車の排気ガスのアセットをかうと良いですよ
2017/12/11(月) 14:25:47.65ID:xcDA2XWm
>>761
車とは別に新しくオブジェクト作って、
それにパーティクル追加してあとから車と同期(車と一緒に動くように)すればいいって事ですか?
2017/12/11(月) 14:30:15.62ID:V8qj051b
パーティクルを車の子オブジェクトにして位置と向きをインスペクターで変えてくらふぁい(^^
2017/12/11(月) 14:31:22.80ID:V8qj051b
ってよく見たら>>761に答えが書いてありまひた(^^
お節介失礼しまんこ(^^
ボッキング!(^^
2017/12/11(月) 14:58:00.33ID:HEOTRILb
>>763
車の子オブジェクトにすればわざわざ同期なんて取らなくても相対位置と向きを保ったまま車と一緒に動いてくれるでしょう
2017/12/11(月) 16:02:51.94ID:02QPz9bc
このスレの人ってまさか車のモデルをそのままヒエラルキーに配置してそこにスクリプト直付けしてるの?
普通Create Emptyで作った空のオブジェクトの下に作るよね?
2017/12/11(月) 16:34:52.69ID:T/JrBtRm
全体的に、自分で色々工夫してみることをしないで人に答えを求める輩が多い気はするね。
プログラミングに答えはなくて目的の結果になる方法はいくつもあるのに他人のやり方を真似したがる人が多すぎるねここ。
2017/12/11(月) 16:36:31.43ID:B36sEdco
人それぞれ。結果が満足なら中身なぞどうてもいい。
自分なりの作り易さを模索するだけさ。
2017/12/11(月) 16:38:59.95ID:VIjb3sER
TanksにLeftDustTrailとRightDustTrailって入ってるじゃろ
2017/12/11(月) 16:39:28.70ID:T/JrBtRm
他で例えると
攻略本無いとゲームを出来ない人とか
うまいラーメン本に紹介されてるラーメン屋にしかいけない人とか
ジグソーパズルを買って全部人に作らせてる人とか
何かしら他人の助けがないとダメで自分で工夫できない人というか
そんなのに似てる気がする
2017/12/11(月) 16:41:13.85ID:T/JrBtRm
そんな俺はUnityはプラモとかDIYと同じだと思っている
2017/12/11(月) 16:44:46.62ID:VIjb3sER
チュートリアルで例(ひな型?)が示されてるのに、やってないだけだよ
やって気付かないってのはありえない
2017/12/11(月) 17:01:29.50ID:xcDA2XWm
このスレっていっつもマウント取るか嫌味しか言わない上級者様ばっかだよね
なんで質問スレにいるの?
自分なりに試行錯誤して分からない結果聞きに来てる初心者の自分からしたら意味が分からない
2017/12/11(月) 17:08:45.71ID:B36sEdco
>>774
捻くれたやつなんかスルーしとけ。教えてくれた人にはお礼を言う。
他人の成長が怖くて、少しでも時間を削ろうとしてるのさ。
2017/12/11(月) 17:13:36.54ID:Gwv7NuWB
パソコン買ったらパソコンの使い方講座が無料でついてきたにも関わらず、
そんなの要らない自分で出来るって無視したのお前やろ

だったら人に聞かずにやるのが筋ってもんじゃあないの?
2017/12/11(月) 17:16:53.36ID:xcDA2XWm
>>775
そうだね、ありがとう

最初から堅苦しいマニュアル一から読んで自分の手動かそうとしない奴らの作ってるゲームが面白いとは全く思えないんだけどなあ
2017/12/11(月) 17:20:38.93ID:HEOTRILb
>>774
"同期"なんて用語を知ってるのに子オブジェクトが分からないという、なかなか不思議な学習曲線を辿ってるみたいだから理解されなくてもまぁ仕方ないかも
チュートリアルどれくらいやった?
2017/12/11(月) 17:21:19.77ID:7znfHEz6
効率を求めた結果、本末転倒になってりゃ世話ない
2017/12/11(月) 17:36:21.95ID:rG1bqsx7
少しここ覗いてたけど、質問しようなんて気にならない
Unityを使ってる知り合いを作る方が早いしためになるからそうしたわ
2017/12/11(月) 18:05:09.66ID:rJi7rAoj
Transform c = transform.GetChild(0).GetChild(0);
Transform b = transform.GetChild(0);
Transform a = transform;
a.parent = b;
b.parent = c;

これ動かしても親子変わらないのは仕様ですか?
2017/12/11(月) 18:18:16.44ID:02QPz9bc
そうだぞ
引きこもりのお前らを社会に戻すために俺はここで嫌味を書き込んでいる
さっさとエンジニアの知り合いを作りたまえ
2017/12/11(月) 18:26:44.90ID:6snW9ojT
あんたいいやつだな
2017/12/11(月) 18:32:42.55ID:v+pV5X5w
車の排気ガスについて、

移動した車に付いていくアニメーション的な排気ガスにするパターンと

排気ガス自体は、移動前の車の位置に留まり、その場でフェードアウトしていき、
移動した車が次々に新たな位置に排気ガスを生成していくパターンが有ると思う

前者は、アフターバーナーみたいな、付いていくタイプ
後者は、飛行機雲みたいな、置いてくるタイプ

子オブジェクトとして生成するか、
独立オブジェクトして生成するかは、好みによるのでは・・・
2017/12/11(月) 18:40:23.63ID:T/JrBtRm
初心と無能を間違えてはいけない
基礎を勉強し身につけた者だけが初心を名乗れる
基礎をやらず教えて君は無能だよ

取説読まない
何もやらない
全部すぐ人に頼る
これは初心者じゃない

教習所に通わずいきなり車を運転しようとしてるやつ
これも初心者じゃない

初心
これの意味をもっとよく考えてから質問しよう

プラモ買って説明書読まない組んでて
途中で出来ないから作り方教えてくれという自称初心者がいたらどう思う?
説明書をまず読めと思わないか?
質問の質があまりにも低すぎるのが問題
786名無し@キムチ
垢版 |
2017/12/11(月) 19:11:07.14ID:bqjs8mgU
>>782
エンジニアよりキムヨナと知り合いたいな・・
2017/12/11(月) 19:11:25.30ID:6tubAqHL
>>781
root同士じゃないと出来ない組み合わせなかったっけ?
cとbを
c.transform.parent = null;
b.transform.parent = null;
で親子解除すれば出来る
788名無し@キムチ
垢版 |
2017/12/11(月) 19:16:57.23ID:bqjs8mgU
>>785
初心者とはそんな難しいもののことではない。
単純にビギナーのことだ。
2017/12/11(月) 19:20:05.88ID:rG1bqsx7
そういえばUnity初心者スレってないのな
2017/12/11(月) 19:32:44.82ID:T/JrBtRm
>>788
ビギナーは英語で初心者という意味
>初心者とはそんな難しいもののことではない。
>単純に初心者のことだ。
自分の発言が情けないほど意味不明になると思わない?
基礎を学ばずにいるとこうやって無能を晒し恥をかくだけ
分かりやすい例になってくれてありがとう!
2017/12/11(月) 20:07:01.75ID:qY5Wc6Xa
チュートリアルすらやってないドキュンとか、
補助輪取れないアホは無視でいい
2017/12/11(月) 20:22:52.74ID:g06Ln43v
>>785
完全にクレーマーw
2017/12/11(月) 20:52:55.52ID:u584Mmdp
>>785
では質問、外部サイトの情報をスクレイピングして情報を抽出するゲームを作成しています。
読み出すサイトの文字コードに合わせてSystem.Text.Encodingクラスを用いて変換しているのですが、エディタ上で動かすと正しく動きますが、実機にビルドするとsjisやeucjpなどでエラーとなります。これは何故でしょうか?
2017/12/11(月) 21:01:24.21ID:u584Mmdp
さて>>793の答え合わせだ。
スタンドアロンプレイヤーはデフォルトでI18n.dllとI18n.CJK.dllを内包しないから、これらをアセット内にぶち込めば解決するが正解な
どうせ質問がちょっと知識や経験が必要な領域になると皆スルーして俺しか答えなくなるんだから仲良くしとけ

>>784
それはヒエラルキー構造もスクリプトも変更する必要はなく、パーティクルのSimulation Spaceを変えるだけで実現可能だよ
エミッタ(=ParticleSystem)自体はどちらであっても車本体の子オブジェクトにして問題ない
2017/12/11(月) 21:03:22.24ID:wTfFWu/6
2.5dのコマンドRPG作るのにplaymakerって使えますかね?
ターン制の処理をこれにさせたいのですが買おうか迷ってます。
2017/12/11(月) 21:04:49.25ID:pffoEIhS
使える
2017/12/11(月) 21:08:29.22ID:7N8aCxOe
785は滑稽だな
リテラシに慣れていないと、公式マニュアルを読んでも、キーワードを聞いても全く頭に入ってこない人もいる
一般的に言って誰にも苦手な分野はある。例えば日本の役所手続きが良い例
適性が無いとの非難があるかもしれないが、本来、道具は、適性とは無関係に操れるものであるべき
ところで自由競争戦力スキルへの適応を2chで強要するのは傲慢無恥・視野偏狭で滑稽である(プ
2017/12/11(月) 21:09:37.13ID:lT/DnU8s
ID:u584Mmdpに全部丸投げで解決だなw
2017/12/11(月) 21:15:59.64ID:L0Sd+qXD
趣味なんて出来なくても死ぬわけじゃないし、
乗れもしない一輪車に勝手に跨って勝手に傷だらけになってるだけじゃない
怪我と弁当は自分持ちで頼むよ
2017/12/11(月) 22:02:19.01ID:SkZjimvo
詳しい人が降臨しているようなので質問!

角速度
Rigidbody.angularVelocity = new Vector3(a, b, c)
による回転を1秒間行った場合の、

向き(角変位)
Rigidbody.rotation
を、あらかじめ計算でQuaternionを求めておきたいのですが、

Rigidbody.rotation = Quaternion.AngleAxis(angle, axis)
で入力する場合、
float angle = いくつ?
Vector3 axis = いくつ?
に設定すれば良いのでしょうか??

普段は実際に時間をかけて回転させるのですが、
ショートカット入力によって、瞬間的に向き変更したためです。

普段は速度velocityで移動させていたのを、
瞬間的に位置positionで変位させるのと同じ感じです。
2017/12/11(月) 23:16:52.47ID:T/JrBtRm
初心者は基礎勉強を習得した後に応用問題などで躓く者
無能は怠慢で基礎勉強をせずに全てに躓く者
そして自分は初心者だと勘違いしてる者
無能と初心者は全然違う

初心者には教えるが怠け者なだけの無能には教えたくはないって人が多いと思う
質問する気になれないなんて者は来なくていいと思う
そいつが消えた所でそいつが困るだけでこっちは何も困らない
どうぞ勝手にお帰り下さいなんじゃないかな?
ましてや自分は初心者だから教えてもらって当たり前なんて思ってる勘違いには特に

悔しいなら無能をやめて初心者になり
教えたい人が思わず教えてやりたくなるような質問したら?
2017/12/11(月) 23:21:47.98ID:T/JrBtRm
>>794
質問ではなく相手を試す問題だと見抜かれてスルーされた事にそろそろ気づこうか

>>797
悪いが発言内容が超明後日方向でずれてるから
2017/12/11(月) 23:28:43.27ID:T/JrBtRm
>>794>>797の2人は俺の考えに反対やら滑稽やらなら
ニセ初心者のしょーもない今までの質問全てに全部答えてあげてないと
俺そういう場面見てないんだけど
今も俺にレスするよりそっちが先とおもうけど未処理の物が沢山あるよ
明日からもずっと頼むよお2人さん
俺の考えに反対で反論してくるのはそういうことだから
2017/12/11(月) 23:32:55.29ID:7N8aCxOe
ビッグアップル大丈夫か
2017/12/12(火) 00:07:46.96ID:yWI4yO+J
まさかツッパリが足りずに弱音を吐いて「大目に見てくださいよ〜〜〜><」とか懇願してるわけじゃあるまいな
2017/12/12(火) 00:18:39.38ID:awDx9SbB
試行錯誤が大好きなら一生迷走しててええんやで
遠慮すんなよw
2017/12/12(火) 00:29:29.52ID:K5+QKreg
>>800
偉そうに講釈垂れてる人が大勢いるのにこれにレスがつかないの酷すぎないか…

キッチリ1秒後なら

var r = Mathf.Rad2Deg;
Rigidbody.rotation *= Quaternion.Euler(a * r, b * r, c * r);

でどないでしょ
2017/12/12(火) 00:36:52.31ID:K5+QKreg
>>800
rigidbody.rotation *= Quaternion.Euler(rigidbody.angularVelocity * Mathf.Rad2Deg)

のほうが簡単か
2017/12/12(火) 02:09:47.10ID:s3bcy12n
@angle = Vector3(a, b, c).magnitude * Mathf.Rad2Deg

3Dの場合、angularVelocityは、rad/秒で入力するので、
a,b,cはrad/秒で入れているはずだから、
angleは度での入力になるため、
* Mathf.Rad2Degで、rad→度の変換が必要ですね

Aaxis = Vector3(a, b. c).normalized

これをQuaternion.AngleAxisに入れると、1秒後の回転状態になります
試してみて下さい

Quaternion.Eulerは、
Z軸回転→X軸回転→Y軸回転の連結回転になるので、
計算結果が、角速度での回転状態と合わないですよ

angularVelocityは全軸同時回転ですから
回転ベクトル=回転角 * 回転軸ベクトル
で計算しないとダメなはず
2017/12/12(火) 02:14:08.74ID:K5+QKreg
なるほど
勉強になった
ありがとう
2017/12/12(火) 04:00:52.95ID:kM1br0bK
>>794
"unity shiftjis error"でぐぐって一番上に出てくる内容コピってどやってんじゃねーよw
仰られてる知識や経験は、その問題に関してはとくに必要なさそうです
2017/12/12(火) 06:49:36.70ID:yWI4yO+J
809
そういう「より優れた仕様奴隷状態」をドヤる話だと思ってたわ
2017/12/12(火) 07:26:11.46ID:OlgvJzEy
>>811
うん、そのドヤ顔を期待してたw
全く待たずに回答投下してるのに顔真っ赤でスルーされた事に気づけとか書いてる奴がいたのには驚いたが

だかな、この質問俺が数年前過去スレに質問して回答が得られなかった質問なんだわ、その後自己解決して方法も書いたはず
2017年4月のそのTIPS見て、同じようなことで困ってる奴多かったんだなと懐かしく思った記憶がある

>>800
すまん、昨日は撒き餌撒いて寝てしまったので見てなかった
回答はついてる様なので省略するが、物理エンジンで動かす場合、摩擦やら他のオブジェクトとの衝突やらで結果がズレる可能性があることには注意な
2017/12/12(火) 07:26:33.24ID:yWI4yO+J
仕様奴隷「俺はこんなにも素晴らしい奴隷なんだ!もっと俺をこき使ってくれぇええ!!」(ドヤァアアア!!!)
815名前は開発中のものです。
垢版 |
2017/12/12(火) 07:29:16.97ID:QJDJOOiE
レベルデザインに使えるツール教えてください
アセットでもいいです
2017/12/12(火) 07:34:12.06ID:yWI4yO+J
回転もデフォで減速するみたいだな
いちいち生意気なんだよUnity
2017/12/12(火) 08:13:35.13ID:tVhYuHY1
>>815
どんなのを求めているかわからないけどアセットでもいいなら
ProBuilderなんてどうだい?
818名前は開発中のものです。
垢版 |
2017/12/12(火) 09:37:16.36ID:QJDJOOiE
>>817
アセットのセットみたいなのがほしいです
フリーで
2017/12/12(火) 10:39:07.71ID:qFAu6kJp
アセットじゃないけどスケッチアップなんてどうだい?
CADツールだけどUnityでそのままスケッチアップ形式のファイルを読み込むことができるんだ

そしてウェアハウスっていうUnityでいうアセットストアのようなところで他人の作ったオブジェクトをダウンロードできるんだ

ただし無償版でどこまでできるか把握してないから
気になったら調べてごらんよ
2017/12/12(火) 11:37:29.41ID:V4vKOuq6
VS for Macでコーディングしている人いる?
予測コーディングが効かなかったり、最近のアプデで日本語入力がリアルタイムで表示されなくなったり、子音の入力が反応悪かったり
色々ボロボロで進捗やばいんだけどMacでの開発に向いてるテキストエディタ何か無いかしら?
2017/12/12(火) 13:51:05.12ID:awDx9SbB
>>811
どうせキムチだよw
2017/12/12(火) 15:35:32.47ID:ICWFqCcb
>>820
neovim
2017/12/12(火) 17:04:49.48ID:SinzmT6m
VS codeを使うといい
for macは対応が不完全なゴミだがcodeはmacでも完璧に使える
金払ってもいいならRider
2017/12/12(火) 17:13:54.71ID:md8fOJvX
VS codeの怒涛の更新ペースは何事かと思うw
2017/12/12(火) 18:36:56.62ID:w86KIWp6
>>807 >>808
>>809
ありがとうございます!
両方やってみました

Quaternion Q;
Vector3 axis, Vdeg, Vrad;
float angle, t;
Rigidbody rb;

void Start () {
 rb = GetComponent < Rigidbody > ();
 Vdeg = new Vector3(45, 30, 0);
 Vrad = new Vector3(45, 30, 0) * Mathf.Deg2Rad;
 Q = rb.rotation;
}
2017/12/12(火) 18:37:14.48ID:w86KIWp6
void FixedUpdate () {
 t = Time.time;
 if (t == 0) {
  rb.angularVelocity = Vrad;
 } else if (t == 1.0f) {
  Debug.Log ("t=" + t);
  Debug.Log ("angularVelocity:" + rb.rotation.eulerAngles);
  rb.angularVelocity = Vector3.zero;

  //angle = Vrad.magnitude * Mathf.Rad2Deg;
  //axis = Vrad.normalized

  angle = Vdeg.magnitude;
  axis = Vdeg.normalized;

  rb.rotation = Quaternion.AngleAxis (angle, axis);
  Debug.Log ("AngleAxis:" + rb.rotation.eulerAngles);

  rb.rotation = Quaternion.Euler(Vdeg);
  Debug.Log ("Euler1:" + rb.rotation.eulerAngles);

  rb.rotation = Q * Quaternion.Euler(Vdeg);
  Debug.Log ("Euler2:" + rb.rotation.eulerAngles);

  rb.rotation = Quaternion.Euler(Vdeg) * Q;
  Debug.Log ("Euler3:" + rb.rotation.eulerAngles);
 }
}
2017/12/12(火) 18:41:32.25ID:w86KIWp6
結果です!

angularVelocity = new Vector3(45, 30, 0) * Mathf.Deg2Rad
を入力すると、

@angularVelocity:Vector3(42.4, 37.4, 15.0)
 1秒ピッタリで止めるには、FixedUpdate内でないとダメのようですね

 Invoke("Stop", 1.0f)で呼び出すと、
 angularVelocity:Vector3(43.1, 38.6, 15.7)と
 1フレーム分くらいの遅延が生じる模様・・・

AAngleAxis:Vector3(42.4, 37.4, 15.0)

BEuler1:Vector3(45, 30, 0)

CEuler2:Vector3(45, 30, 0)

DEuler3:Vector3(45, 30, 0)

angularVelocityをEulerでQuaternionに入れちゃうと、
角速度による回転結果のQuaternionと少し違うようです・・・
AngleAxisでQuaternionに入れる方が正しいみたいですね
2017/12/12(火) 18:52:30.96ID:w86KIWp6
>>816

回転が勝手に減速する話は本当ですか?
AngularDrag = 0にしてない・・・とかではなくて??

RigidbodyをangularVelocityやAddTorqueで回転させて、
1秒ごとにangularVelocityを表示させても、
回転速度は落ちてないようなのですが・・・
2017/12/12(火) 20:43:24.56ID:s3bcy12n
>>826

RigidbodyもRigidbody2Dも、
LinearDragは0が初期値だけど、
AngularDragは0.05が初期値なのが、
気に入らないということでは?
2017/12/12(火) 20:43:27.01ID:WuPRAOqq
今までモーションは、簡単だからmmdで作ってたけどx軸とy軸の計算違うような……
blenderに乗り換えた方がいいのだろうか。
2017/12/12(火) 20:56:14.28ID:+nER52Ex
はい
2017/12/12(火) 21:01:44.29ID:WuPRAOqq
やっぱか……
blenderの勉強してくるわ。
mmd使うとか俺ってほんとにバカ……
833名無し@キムチ
垢版 |
2017/12/12(火) 21:17:33.27ID:pZVPZZmh
>>832
Blenderには気を付けたほうがいい
Blender上では問題なくモーションしてても、unityに取り込んで動かすと、手が体に食い込んだりしているから。
何度か行ったり来たりする必要があるw
2017/12/12(火) 22:25:16.08ID:oOD9NLJB
blender でもやっぱり同じようなこと起きると思うよ
表現力に不満がないならMMDにしとき
2017/12/12(火) 22:32:44.76ID:9L2xhVzt
else ifまで読んだ
そんなか入るの?!
2017/12/13(水) 00:01:44.95ID:/jokcbje
>>827

最初の回転状態が、
rotatiin =Quaternion.identityであれば、

1: rotation = Quaternion

2: rotation = rotation * Quaternion

3: rotation = Quaternion * rotation

1-3は全て同じ結果になります。

position = Vector3.zeroの場合、

1: position = Vector3

2: position = position + Vector3

1-2が同じ結果なのと一緒です。
2017/12/13(水) 00:07:16.00ID:/jokcbje
rotationの場合も、positionの場合も、

1は、角変位や位置の絶対指定、
2-3は、角変位や位置の相対指定です。

rotatiin =Quaternion.identityでない場合、
position = Vector3.zeroでない場合、

1と、2-3で、結果が変わってきます。

しかも、rotationの場合、

2: rotation * Quaternionと
3: Quaternion * rotationでも、結果が変わってきます。

追加するQuaternionによる角変位の回転軸を、
transform軸を基準にした回転にする場合は2になり、
キャンバスのVector3軸を基準にした回転にする場合は3になります。
2017/12/13(水) 00:35:37.82ID:/jokcbje
>>825-827
Invokeが呼び出しの際に1フレーム遅れるとわかっているのであれば、
1フレーム前の時間で呼び出させば大丈夫ですよ。

void Start () {
 rb.angularVelocity = new Vector3(45, 30, 0) * Mathf.Deg2Rad;
 Invoke ("Stop", 1 - Time.fixedDeltaTime); ←1フレーム前に呼び出し
}

void Stop () {
 Debug.Log ("1秒後のrotation:" + rb.rotation.eulerAngles);
 rb.angularVelocity = Vector3.zero;
}

「1秒後のrotation:Vector3(42.4, 37.4, 15.0)」が出ましたよ。
>>809の方法で求めた場合と一致する値です。

rb.angularVelocity = new Vector3(45, 30, 0) * Mathf.Deg2Rad
angle = (rb.angularVelocity).magnitude * Mathf.Rad2Deg

V = new Vector3(45, 30, 0)
angle = V.magnitudeでも同じ結果になります。
2017/12/13(水) 06:09:25.65ID:EBksqhAl
>>834
そうなのか……
大きい移動とかはスクリプトで制御するしかないのか。
ありがとう
2017/12/13(水) 18:54:39.99ID:+IrYaRns
趣味でUnity使ってゲーム制作してる人と友達になる方法教えてください
2017/12/13(水) 18:59:16.17ID:w+IYDO+A
お断りします
2017/12/13(水) 19:00:06.72ID:EBksqhAl
ツイッターでよくね?
現実で探そうとしてもなかなか見つからんもんだぞ。
2017/12/13(水) 19:11:19.37ID:6lJsdJ22
transformのposition, rotation, scaleって、
なんでtransform.position,transform.rotation,transform.lossyscale
になっていて、transform.scaleじゃないの??
2017/12/13(水) 19:23:08.89ID:+IrYaRns
>>842
日本の活発な交流サイトとかはなさそうですね…ありがとうございます
2017/12/13(水) 19:54:49.63ID:IotT1rVx
>>844
ツイッター
FacebookのUnity寄り合い所
あとはリアルのイベント
ゲームジャムやエンジニア向け勉強会に参加して交流、名刺交換、SNS垢の相互フォローなどすれば簡単に知り合いは増える
ちゃんと進捗をSNS上で報告すれば質問とかも答えてもらえる
イベントを探すならdoorkeeper、atnd、peatix
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況