[過去ログ] 【3Dゲームエンジン】Unity質問スレッド32 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
865(1): 2017/12/14(木)19:21 ID:JR7j67YV(2/2) AAS
>>861
3次元のベクトルを回転させるのに、なんで4x4行列なの?
回転行列って、3x3行列じゃないの??
866(1): 2017/12/14(木)20:39 ID:AuQKwcV0(3/7) AAS
>>865
移動と回転とスケーリングができるように、
アフィン変換行列になっているからです。
Matrix4x4.TRS(position, rotation, scale)
で4×4行列に入力できますが、
出力する時は、
Vector3 = Matrix4x4.MultiplyVector(Vector3)
によって、Vector3で入力して、
Vector3で出力できるようになっています。
867: 2017/12/14(木)20:55 ID:N8/aZDnG(1/2) AAS
>>866
はえ〜すっごい‥
868: 2017/12/14(木)21:30 ID:AuQKwcV0(4/7) AAS
>>858
回転行列MでベクトルV0を回転させて、ベクトルVにするには、
Z軸で30度回転する場合は、
Quaternion Q = Quaternion.Euler (0, 0, 30);
Matrix4x4 M = Matrix4x4.TRS (Vector2.zero, Q, Vector2.one);
Vector3 V0 = new Vector3(1, 2, 3);
Vector3 V = M.MultiplyVector (V0);
これを、QuaternionとVector3の演算で行うと、
Quaternion Q = Quaternion.Euler (0, 0, 30);
Vector3 V0 = new Vector3(1, 2, 3);
Vector3 V = Q * V0;
869: 2017/12/14(木)21:32 ID:AuQKwcV0(5/7) AAS
Matrix4x4 M = Matrix4x4.TRS (Vector2.zero, Q, Vector2.one);
は間違いで、
Matrix4x4 M = Matrix4x4.TRS (Vector3.zero, Q, Vector3.one);
が正しいです。
870(1): 2017/12/14(木)21:45 ID:AuQKwcV0(6/7) AAS
>>858
Quaternion QでベクトルV0を回転させて、ベクトルVにするには、
Z軸で30度回転する場合は、
Quaternion Q = Quaternion.Euler (0, 0, 30);
Vector3 V0 = new Vector3(1, 2, 3);
Quaternion Qv0 = Quaternion.identity;
Qv0.Set(V0.x, V0.y, V0.z, 0);
Quaternion Qv = Q * Qv0 * Quaternion.Inverse (Q);
Vector3 V = new Vector3(Qv.x, Qv.y, Qv.z);
こちらが、本来のQuaternion積でベクトルを回転させる方法です。
Unityでは、この面倒くさいQuaternion積の演算が、
「Quaternion * Vector3」だけでできるようになっています。
871: 2017/12/14(木)21:55 ID:AuQKwcV0(7/7) AAS
Vector3 = Quaternion * Vector3
は、行列積を意識していると思われます。
Vector3 = Matrix3x3 * Vector3
としたいところですが、
UnityにはMatrix3x3は用意されていません。
(3×3行列の乗算では、回転とスケーリングしかできないからです)
Vector4 = new Vector4(Vector3, 1) で4次元ベクトルにしてから、
Vector4 = Matrix4x4 * Vector4 で計算して、
Vector3 = (Vector3)Vector4 で3次元ベクトルへ戻す必要があります。
最初に、Vector4 = (Vector4)Vector3 と手抜きをしてはいけません。
Vector4 = new Vector4(Vector3, 0) で代入されると、
アフィン変換の「移動」が乗算されなくなります。
872: 2017/12/14(木)23:49 ID:zts/k6NY(1) AAS
行列なんか意識しないでも3dゲーム作れるようになったんだからすごい時代だよね
結構まえからだけど
873: 2017/12/14(木)23:54 ID:N8/aZDnG(2/2) AAS
>>870
へー、なるほどなぁ‥
874(1): 2017/12/15(金)01:39 ID:TM1zyrgU(1) AAS
>>864
年契約の1ヶ月払いってだけなんですね
ありがとうございます
875: 2017/12/15(金)04:19 ID:L6b+QAfA(1) AAS
なるほど よくわからん
876: 2017/12/15(金)11:35 ID:a5awPS/6(1) AAS
>>874
半額だったんでplusを年契約の年払いしたよ
売り上げ1千万以上なのに。
たかだか1万円ぐらいを月払いする奴いるの?
877(1): 2017/12/15(金)12:38 ID:c63jfGrC(1/2) AAS
物理演算系の解説を希望!
C#の経験あっても、そもそも物理演算は別物な気がする・・・
物理演算は、2Dと3Dで若干仕様が違うし、なかなか体系的に物理演算を解説しているサイトも少ない
せいぜい、velocityとAddForce止まりが多い
重力設定や衝突判定をUnityにまかせてしまうには、物理演算を使用するのが手っ取り早いんだけど、
物理演算だと、これまでのグラフィックス操作的な、プログラミングメソッドがあまり使えない
(基本的に、positionやrotationを直接いじらないほうが良いみたい)
878(3): 2017/12/15(金)12:46 ID:bN2Y1bPS(1) AAS
アイテムを所持していればお化けを倒せるというシステムにしようと思っています。
それでそのアイテムを十字架の画像にしようと思っているのですが、日本人だったらアイコン見ただけで何となく意味が分かるだろうと思うのですが、海外の人でも抵抗なくスッと理解されるんでしょうか?
879: 2017/12/15(金)13:05 ID:DzxyY709(1) AAS
>>878
アセットを購入すればいいですよ
880: 2017/12/15(金)15:58 ID:59uPCR9L(1) AAS
>>878
海外のゲームを参考にすればわかりますよ
881: 2017/12/15(金)16:32 ID:kzY3QNw/(1) AAS
>>878
ゲームデザインにもよるけど
そのアイテムの効果とお化けとの相互関係が分かるような物なら多分大丈夫かなぁ アイテム説明とかも結構重要だけども。
882(1): 2017/12/15(金)16:54 ID:bO73tzHJ(1) AAS
アイテム説明が一番確実だわな
むしろ必須じゃないか?
883(2): 2017/12/15(金)20:05 ID:c63jfGrC(2/2) AAS
transform.LookAtだと、どうしてもオブジェクトのforward軸が対象を向いちゃう
そうじゃなくて、オブジェクトのup軸を対象に向けたいんだけど、一体どうすれば・・・?
transform.LookAtでオブジェクトのforward軸を対象に向けて、
その後にtransform.Rotateでx軸で90度して、up軸をforwardへ向けているんだけど、
2段階になっちゃって、無駄が多いし、その瞬間動作が表示されちゃう
オブジェクトとtransform軸の対応を変更できれば、
オブジェクトのup軸方向を、forward軸に設定したいんだけど・・・
884: 2017/12/15(金)20:51 ID:PCtIHB7r(1) AAS
おぶじえくを最初から傾けておくか、小オブジェクトで対応するか、いくらでも方法あるだろうね。
ルックアット使わずにやるのも有りだし。
885(3): 2017/12/15(金)23:29 ID:nw+wySXa(1/3) AAS
>>883
目標の座標をVector3 targetとすると、
transform.right = targetでいけませんか?
transform.LookAt(target) は、
transform.forward = target と同じになるはずです。
886: 2017/12/15(金)23:37 ID:nw+wySXa(2/3) AAS
もっとも汎用性のある方法は、
向き(transform.rotation)を、
向けたい軸(Vector3.right)を向かせたい相手(target)へ向ける回転
Quaternion.FromToRotation にしてしまう方法かと思います。
transform.rotation = Quaternion.FromToRotation(Vector3.right, target)
になります。
例えば、左側をtargetに向けたい場合、
Vector3.right を、- Vector3.right に変更します。
(Vector3.right = - target でも勿論できます)
ただ、Vector3.oneをtargetに向ける回転は、
transform軸への代入ではできず、
上記の汎用法を使うのが良いと思います。
887(2): 2017/12/15(金)23:38 ID:nw+wySXa(3/3) AAS
>>883
読み間違えました。
up軸を向けるのでしたね。
?transform.up = target
?transform.rotation = Quaternion.FromToRotation(Vector3.up, target)
888(1): 2017/12/16(土)01:09 ID:yxJiRP9K(1/2) AAS
先生、お元気ですか?
ゲームの世界は感覚的すぎて戸惑います。
学び舎では多くを教わりましたが、教わった通りに自分が成長できているか分かりません。
ぼくは、自分の理想の世界観を語れるほどゲームを知らないということを知りました。
惹かれます。
ゲームを、もっと知りたいです。
889: 2017/12/16(土)02:04 ID:hBjssZ70(1/5) AAS
>>888
どこかで見た文章だけど、元ネタが思い出せない・・・
890: 2017/12/16(土)05:13 ID:nt3lwpZi(1) AAS
>>882
文字で説明しないと伝わらないUIはデザインとしてゴミ以下
891: 2017/12/16(土)10:52 ID:rc5ijf27(1) AAS
質問です
友人がウインドウズで9人対9人のオンラインゲームを作りたいと言ってます
それはつまり18人がオンライン接続してゲームするわけですが
そんなことUnityでやれますか?
892: ダーク王鍬大使 ◆SoVpkB15jY 2017/12/16(土)12:23 ID:finBREYt(1) AAS
出来まふよ(^^
893: 2017/12/16(土)14:06 ID:OPi28kIP(1/2) AAS
何でできないって思うんだろうな
894: 2017/12/16(土)14:10 ID:2jMajkmZ(1) AAS
Unityは出来るけど彼らには出来ない
悲しいけどこれ、ゲーム制作なのよね
上下前次1-新書関写板覧索設栞歴
あと 108 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.012s