[過去ログ] 【3Dゲームエンジン】Unity質問スレッド32 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
953: 2017/12/19(火)00:07 ID:4Od9SmbT(1/3) AAS
ネトウヨ老害死ねばいいのに
ゲ製コミュの印象悪くして皆の足引っ張りやがって
死ねよ不細工メタボ引き篭もりネトウヨ
954(1): 2017/12/19(火)00:27 ID:MvhMRTwq(1) AAS
まーた、ネトウヨキムチがコミュとか言っちゃって
955(1): [944] 2017/12/19(火)03:06 ID:Ih0Nk694(1/2) AAS
一応言っておきますが>>946は自分じゃないですよ…
回答頂いた方には皆感謝してます。
956: 955=944 2017/12/19(火)03:07 ID:Ih0Nk694(2/2) AAS
名前欄ということです。すみません。
957(1): 2017/12/19(火)07:37 ID:4Od9SmbT(2/3) AAS
>>954
は?なんで俺が「キムチキムヨナ」連呼のネトウヨの最底辺メタボのゴミおっさんなんだよ?糖質が絡んでくるなや
「キムチキムヨナ」連呼のネトウヨの最底辺のゴミおっさんがどこで「コミュニティ」とか言ってやがるんだ?
ゲ製コミュをネトウヨコミュニティと一緒にするなやカス共が
>>955
「!」の使い方といい、文体といい、同じに見えるんだが?
ネトウヨの最底辺のゴミおっさんが、わざわざ文体を真似てるってことか?
958: 2017/12/19(火)09:35 ID:VZwsAqll(1/2) AAS
なんか面倒な人に絡まれてるなぁ955
新スレ作るか。
959: 2017/12/19(火)09:36 ID:VZwsAqll(2/2) AAS
新スレビルド完了です...
【3Dゲームエンジン】Unity質問スレッド33
2chスレ:gamedev
960: 2017/12/19(火)10:04 ID:4Od9SmbT(3/3) AAS
なぜ <準コテ「キムチ」で「キムヨナ」連呼> みたいなゴミを、素朴に「ゴミ」と言うことや
ぱっと見で文体が同じに見えることを、素朴に「同じに見える」「一方が真似てる」と言うことが
面倒がられなければならないのか?
素朴な書き込みを面倒がり、ゴミ廃棄を面倒がる奴の方が、よっぽど面倒だぜ?
961(1): 2017/12/19(火)10:13 ID:hldyKkrz(1) AAS
unityにマップを作るtile機能ってあるけど一つのチップセットに対してBoxColliderとかの情報を付けるのってどうすればええんやろ
962: 2017/12/19(火)12:04 ID:m7Eb2COO(1/2) AAS
>>961
アセットをかうしか無いですよ!
963: 2017/12/19(火)14:27 ID:SpU5jUlI(1) AAS
>>950
正解
964: 2017/12/19(火)15:16 ID:ZiJMGaxN(1) AAS
キチガイがいると迷惑だから分類しないとね
965: 2017/12/19(火)15:56 ID:O0snqTpx(1) AAS
>>951
お前が幼稚園や保育園をお望みならそれでいいんじゃない?
まともな小学生以上は自分でググって調べて解決してる
そんな内容ばかりだ
966: 2017/12/19(火)16:33 ID:4R8uUpaI(1) AAS
アセットガイジはなんか売ってるんかなぁ…
967(3): 2017/12/19(火)18:11 ID:OC9tHkfS(1) AAS
>>952
むしろ2DでLookAtさせたいだけならオブジェクトAとBの角度を取って画像をRotateさせるだけでいいんじゃないん?w
968: 2017/12/19(火)19:22 ID:Jz5wVrA6(1) AAS
>>967
そんな難しいことしたくないじゃん
969(2): 2017/12/19(火)19:29 ID:oc7hao2D(1) AAS
>>967
自分をオブジェクトA
Aのposition = transform.position
目標をオブジェクトB
Bのposition = target
とした場合に、
transform.right = target.position - transform.position
と同じ作用になるようにするには、
>>957の方法ではどうなる??
970: 2017/12/19(火)19:59 ID:IygWzju3(1) AAS
>>969
オブジェクト間の角度とる関数あるからしらべて
971: 2017/12/19(火)20:25 ID:v4JsSdmj(1/4) AAS
ベクトル間の角度を出す関数じゃなくて?
ベクトル間の角度だと、原点を中心にした角度になるけど
しかも、それで角度を出すと回転の向きがわからないから、
ベクトルの外積を求める必要もあるよね
972: 2017/12/19(火)22:09 ID:v4JsSdmj(2/4) AAS
>>967
自分でコードを出してみなよ〜
命題:オブジェクトAの向きを、オブジェクトBの方向へ向ける
オブジェクトAの座標は任意(原点とは限らない)
オブジェクトAの向きは任意(0度とは限らない)
オブジェクトBの座標は任意(原点とは限らない)
オブジェクトBの位置はVector3で「target」とする
2Dだから、forward軸をtargetへ向かせるLookAtは使用できない
さて、969のコードを超える簡略化ができるのか?!どうか
973: 2017/12/19(火)22:16 ID:m7Eb2COO(2/2) AAS
アセットを購入すれば簡単簡単
974: 2017/12/19(火)22:17 ID:v4JsSdmj(3/4) AAS
そもそも角度って言っても、
それぞれのベクトルの偏角なのか、2つのベクトルのなす角なのか・・・
Rotate(0, 0, θ)で入れるには、
オブジェクトAからオブジェクトBへ向かうベクトルの偏角じゃないとダメだから、
オブジェクトAのベクトルとオブジェクトBのベクトルのなす角を求める
Vector3.Angleを使っても、それじゃA→Bへの原点中心の公転角になっちゃうよ!
rotationに入れるにはQuaternionである必要があるし、
オブジェクトAの最初の向きが0度じゃない場合も考慮しないといけないし・・・
どう考えても面倒じゃない??
975: 2017/12/19(火)22:59 ID:v4JsSdmj(4/4) AAS
アセットおじさんは、
なんていうアセットで、いくらで、どの機能を使うとできるのかも明記して欲しいね〜
「探せばあるかもよ」じゃね・・・
976(1): 2017/12/20(水)00:34 ID:TUVA4DF6(1/6) AAS
>>969
考えてみました。
Aに下記のスクリプトをセットします。
public class A : MonoBehaviour {
GameObject obj;
Vector3 target, position, direction;
void Start () {
obj = GameObject.Find ("B");
target = obj.transform.position;
position = transform.position;
direction = target - position;
Invoke ("Rotate", 1.0f);
}
void Rotate(){
transform.right = direction; ←ここを置き換えるコードです。
}
}
977(1): 2017/12/20(水)00:39 ID:TUVA4DF6(2/6) AAS
?Quaternion.FromToRotationを使用する方法1
transform.rotation = Quaternion.FromToRotation (Vector3.right, direction);
?Quaternion.FromToRotationを使用する方法2
transform.rotation = transform.rotation * Quaternion.FromToRotation (transform.right, direction);
?Vector3.Angleを使用する方法1
transform.rotation = Quaternion.Euler(0, 0, Mathf.Sign(Vector3.Dot(Vector3.forward, Vector3.Cross(Vector3.right, direction))) *Vector3.Angle(Vector3.right, direction));
?Vector3.Angleを使用する方法2
transform.rotation = transform.rotation * Quaternion.Euler(0, 0, Mathf.Sign(Vector3.Dot(transform.forward, Vector3.Cross(transform.right, direction))) *Vector3.Angle(transform.right, direction));
978(1): 2017/12/20(水)00:44 ID:TUVA4DF6(3/6) AAS
?Vector3.Angleを使用する方法3(Rotateを使用)
transform.Rotate (0, 0, Mathf.Sign(Vector3.Dot(Vector3.forward, Vector3.Cross(transform.right, direction))) *Vector3.Angle(transform.right, direction));
?Mathf.Atan2を使用する方法1(Rotateを使用)
transform.Rotate (0, 0, Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg - transform.rotation.eulerAngles.z);
?Mathf.Atan2を使用する方法2
transform.rotation = Quaternion.AngleAxis(Mathf.Atan2((direction.y, direction.x) * Mathf.Rad2Deg, Vector3.forward);
うーん、どうやっても元よりも長いコードになってしまいます。
オブジェクトAの位置が原点だとか、オブジェクトAの向きが無回転だとか、
条件を付ければ、もう少し簡略化できますが・・・
979(1): 2017/12/20(水)01:00 ID:TUVA4DF6(4/6) AAS
Quaternion.FromToRotation(A, B)では、
回転方向を含めた回転状態を得られますが、
Vector3.Angle(A, B)では、
ベクトル間の角度しかわからず、向きがわかりません。
また、取得される角度は180度以下に限定されるため、
左向きに270度は、右向きに90度かもしれないということです。
回転方向は、Vector3.Cross(A, B)のZ成分が正か負かで判定します。
2Dでは、Mathf.Sign((Vector3.Cross(A, B)).z)でも良いのですが、
3Dでは、回転面がXY平面上とは限らないため、外積ベクトルと
正の向きにしたい軸との内積をとってから符号判定した方が確実です。
Atan2関数は、戻り値がradのため、度に直す必要があります。
また、相対回転であるRotateを使用する場合は、
求めた偏角から、現在の向きの回転角を引いておく必要があります。
rotationはQuaternionのため、eulerAnglesでオイラー角に戻しておき、
Z軸回転成分だけを取り出して減算します。
980(1): 2017/12/20(水)08:42 ID:XTZUI7pU(1/2) AAS
969です
>>976-979
詳しく解説ありがとうございました!
やっぱり、角度から行こうとすると結構面倒ですね〜
981: 2017/12/20(水)18:29 ID:XTZUI7pU(2/2) AAS
汎用性を考えると、Quaternion.FromToRotationは良さそうですね
これは、あるベクトルを別のベクトルにする回転を返すわけだから、
自分の向きを、自分のベクトルから目標とするベクトルへ向ける回転にするわけですか・・・
982: 2017/12/20(水)22:49 ID:TUVA4DF6(5/6) AAS
>>980
テラシュールブログ
外部リンク:tsubakit1.hateblo.jp
ここに、Quaternion.FromToRotationの使い方がうまくまとまってました。
>>var diff = (target.position - transform.position ).normalized;
>>transform.rotation = Quaternion.FromToRotation( Vector3.up, diff);
このサイトでは、diffは正規化されているようですが、
基本的に内部で強制的に単位ベクトルになるようなので、
target.position - transform.positioだけで大丈夫そうです。
なお、外積ベクトルを利用する場合は、大きさも影響してきますので、
方向ベクトルは単位ベクトルにしておいたほうが無難です。
上下前次1-新書関写板覧索設栞歴
あと 20 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.015s