[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild3 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
22
(1): 名前は開発中のものです。 [] 2020/01/13(月) 11:52:55.77 ID:eGNaRuP0(1/2) AAS
Lerpの終了条件って、別にLerpは発動したらずっと動く何かじゃないぞ?
たんに0-1のあいだでfrom,toの間の補完をしてくれるだけだぞ?
お前が次に進めるんだよ!
23: 名前は開発中のものです。 [] 2020/01/13(月) 11:54:05.76 ID:Rcgjsxsv(3/11) AAS
あ、あとStartに書いたのは
Mathf.Approximately(transform.rotation.eulerAngles.y , 90f) これやりたかったので
一応こちらでも判定は行けると思う
24: 名前は開発中のものです。 [] 2020/01/13(月) 11:56:44.83 ID:Rcgjsxsv(4/11) AAS
>>22
だからその上にも書いたけど、浮動小数点をステップに浸かってるからずっとToまでやる訳ですよ
25: 名前は開発中のものです。 [sage] 2020/01/13(月) 12:15:46.59 ID:QiViT9Gr(3/12) AAS
>>21
21(5): 名前は開発中のものです。 [] 2020/01/13(月) 11:46:21.42 ID:Rcgjsxsv(2/11) AAS
画像リンク

これ見て理解して
単純にLerpの事理解してないと思うけど、Time.deltaTime という浮動小数点を使っている以上90度にはならない
最後のprint文表示すると分かるけど永遠と89.xxxxxと表示される
インスペクタは省略表示だからそれに惑わされないように

それから同じオブジェクトで複数軸の回転を行うと当然ながら「Quaternion.Euler(0, 90, 0)」では取れないのは分かるよね?
素晴らしい! 教えてもらった方法で自分がやりたいことが完全に出来た!

4個処理を書いてたのは、プレイヤーがブロックのどの方向に接触したかで、
処理を分岐させる為で、同時に処理するわけではなかった。申し訳ない。

いや、マジでありがとう。本当に理解している人から教えてもらえて、すごく助かった。
26
(3): 名前は開発中のものです。 [sage] 2020/01/13(月) 13:00:01.95 ID:auL79zSW(1/4) AAS
>>21
単純にUnityのこと理解してないと思うんだけど
現在位置からターゲットに向ける用途的にはLerpでなくTowards使うんだぜ

transform.position = Vector3.MoveTowards(transform.position, target.position, moveSpeed * Time.deltaTime);
if(transform.position == target.position) // 移動完了処理

transform.rotation = Quaternion.RotateTowards(transform.rotation, target.rotation, rotSpeed * Time.deltaTime);
if(transform.rotation == target.rotation) // 回転完了処理
27
(1): 名前は開発中のものです。 [] 2020/01/13(月) 13:52:22.60 ID:Rcgjsxsv(5/11) AAS
>>26
ターゲットあるならLookat の方が全然いいんだぜ

って、なやり方なんか色々あるのやで
初心者スレなのよここ
28: 名前は開発中のものです。 [sage] 2020/01/13(月) 15:25:54.10 ID:6zyx93de(1/4) AAS
(補間を求めているところにLookAt……?)
29: 名前は開発中のものです。 [sage] 2020/01/13(月) 16:28:41.18 ID:yBWGUThF(1/3) AAS
まぁ、本人が満足してるからOKだね。
30: 名前は開発中のものです。 [] 2020/01/13(月) 16:29:23.93 ID:Rcgjsxsv(6/11) AAS
(ターゲットに向ける用途的に)
(って、読めないのかなぁ)
31: 名前は開発中のものです。 [sage] 2020/01/13(月) 16:36:47.43 ID:auL79zSW(2/4) AAS
(どう見ても移動と回転の補間としてMoveTowardsまで書いてるのにLookAtって言っちゃう人って…)

って、ごめんマジで教えて
LookAtで座標移動できたっけ?
なんでこの流れでLookAtが出て来るのか分からんぞ
32: 名前は開発中のものです。 [sage] 2020/01/13(月) 16:37:27.12 ID:QiViT9Gr(4/12) AAS
そもそもの質問がターゲットを追うじゃなくて、
"プレイヤーを東西南北の方向に滑らかに正対させる"
だよ。

で、>>21 の方法で求める処理が実装出来た、サンキュー!
33: 名前は開発中のものです。 [sage] 2020/01/13(月) 17:04:23.60 ID:QiViT9Gr(5/12) AAS
>>26
は質問の意味が理解できなかったんだね。スマンスマン。
"プレイヤーを東西南北の方向に滑らかに正対させる"
なので、Lerp が正解だ、RotateTowards では希望の動作にならない。

しかし皆ありがとう。理解するのにとても助けになった。
34: 名前は開発中のものです。 [sage] 2020/01/13(月) 17:31:10.04 ID:6zyx93de(2/4) AAS
(あ、これ一人で質問して一人で回答してる系の痛い奴だ……前も見たことある)
35: 名前は開発中のものです。 [] 2020/01/13(月) 17:40:43.99 ID:Rcgjsxsv(7/11) AAS
ほんと、答え書けないのにそう言うこと書くとか、何かの病気なんだろうね
可哀想に
36
(1): 名前は開発中のものです。 [sage] 2020/01/13(月) 18:11:33.42 ID:auL79zSW(3/4) AAS
初心者に不正解扱いされて笑った

つまりレベル下げて書くとこういうことだろ?
transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.Euler(0, 90, 0), speed * Time.deltaTime);
if(transform.rotation == Quaternion.Euler(0, 90, 0)) // 処理

>>18
18(2): 名前は開発中のものです。 [sage] 2020/01/13(月) 08:38:58.13 ID:QiViT9Gr(1/12) AAS
Quaternion が難しすぎて滑らか回転の独自実装は無理だった…
ので Update() の中で Lerp を使うことにしたけど、
Lerp の終了判定はどうするの?
※speedは適当

// Z軸正方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, 0), speed * Time.deltaTime);

// Z軸負方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 180, 0), speed * Time.deltaTime);

// X軸正方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 90, 0), speed * Time.deltaTime);

// X軸負方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 270, 0), speed * Time.deltaTime);

上記の四つの処理の回転の終了判定が、それぞれ取りたい。
ちなみに以下では取れなかった。

// Z軸正方向
transform.rotation == Quaternion.Euler(0, 0, 0);

// Z軸負方向
transform.rotation == Quaternion.Euler(0, 180, 0);

// X軸正方向
transform.rotation == Quaternion.Euler(0, 90, 0);

// X軸負方向
transform.rotation == Quaternion.Euler(0, 270, 0);
の Lerp を RotateTowards に置き換えればそのまま動くんだよ
それをターゲットがあるとか無いとか初心者ならともかくドヤ顔でレスしてるID:Rcgjsxsvが言い出すのは素人感出し過ぎだぜ
まあ初心者が答えるスレっぽくて俺は嫌いじゃないが
37: 名前は開発中のものです。 [sage] 2020/01/13(月) 18:42:06.51 ID:QiViT9Gr(6/12) AAS
>>36
ん? それでは動かないぞ。今試した。

>>21 の方法なら動いたけどな、確かに>>21の言う通り浮動小数点を理解出来てないっぽいね。

自分は Unity初心者で、初心者スレで訪ねてるんだから、>>21 のように、
わざわざコードを自分で書いて、動くか試してから教えてくれる人に本当に感謝したい。

まあ、間違って動かないコードもそれなりに参考になるからサンキュー!
38
(1): 名前は開発中のものです。 [] 2020/01/13(月) 18:50:34.00 ID:Rcgjsxsv(8/11) AAS
ドヤ顔でレスかぁ
前スレからの糖衣構文君思い出したわ
39: 名前は開発中のものです。 [sage] 2020/01/13(月) 18:59:30.16 ID:QiViT9Gr(7/12) AAS
まず >>26ID:auL79zSW
"現在位置からターゲットに向ける用途的にはLerpでなくTowards使うんだぜ" と言ってるのが、>>15
15(2): 名前は開発中のものです。 [sage] 2020/01/12(日) 21:58:52.24 ID:6ETev4FX(1/2) AAS
Lerp() と Slerp() で滑らかにオブジェクトを回転させたいんだけど、FixedUpdate() 内で使ったら、
それらの回転の終了を知るにはどうするんだろう?

FixedUpdate() 内であるタイミングで滑らかに回転してから次の処理を走らせたい。

そもそも 連続するフレーム内での Lerp() と Slerp() の使い方がわからない。
初心者サイト見ても、FixedUpdate() 内で動的に開始と終了ベクトルを指定するサンプルとかがない。

実践的にはどう使うの? それとも UniRXとか使うの?
からの質問の文脈を無視してるね。

で、>>27ID:Rcgjsxsv
”ターゲットあるならLookat の方が全然いいんだぜ” と言っているのは >>26 でターゲットと出てきたからだ。人の話を聞いてそれに反応してるんだよね。

でも、ドヤ顔して教えてくれて全然かまわないんだ。Unity初心者でも参考になる情報とそうではない情報の区別はつくから。
というか、自分の質問で争いになって申し訳ない気持ちだ。皆さんどうもありがとう。
40: 名前は開発中のものです。 [] 2020/01/13(月) 19:46:20.54 ID:eGNaRuP0(2/2) AAS
>>38
ああお前勘違いLINQ理解君?
41
(1): 名前は開発中のものです。 [sage] 2020/01/13(月) 20:01:23.35 ID:6zyx93de(3/4) AAS
Lerp勘違い理解君か
初心者スレが魔境過ぎて中級者の俺には付いてけない
42: 名前は開発中のものです。 [sage] 2020/01/13(月) 20:15:44.52 ID:QiViT9Gr(8/12) AAS
質問スレなんで、質問に対する解決策の提案が出来なければ、誰にも感謝されないよ。
仮に、提案が間違っていても問題ない。一緒に考えてくれることがとてもありがたい。

教えてくれて本当にありがとう。
43
(1): 名前は開発中のものです。 [sage] 2020/01/13(月) 21:07:35.13 ID:auL79zSW(4/4) AAS
物知り顔でドヤってる>>21があまりにも愚かだったから突っ込んだだけで感謝とかそういうのは別に求めてない
……というかてめえには一言足りとも語りかけちゃいないのになんでお前がいちいち答えるんだよ、構ってちゃんかよ
44: 名前は開発中のものです。 [] 2020/01/13(月) 21:09:46.43 ID:Rcgjsxsv(9/11) AAS
>>41
自称中級者なのになんで初心者スレきたの?
寂しいの?
書かないと死ぬ病気なの?
構ってほしいのかな?

なら雑談スレいけやぼけ
45
(1): 名前は開発中のものです。 [] 2020/01/13(月) 21:11:21.23 ID:Rcgjsxsv(10/11) AAS
>>43
だから糖衣構文君は雑談スレで勘違いして暴れていいよ
ほんと動かないコード書いて恥ずかしくないのかね
46
(2): 名前は開発中のものです。 [sage] 2020/01/13(月) 21:32:16.53 ID:QiViT9Gr(9/12) AAS
質問いいかな?

マリオ64+初代トゥームレイダーみたいな3Dアクション作ってるんだけど、
スマホ画面のバーチャルボタンでの二つボタン同時押しがきつい。
例えば、Bダッシュジャンプ(※B押しながらAでジャンプ)とかが出来ない。

そこで物理コントローラでの操作はそのままで、例えばスマホ画面の
バーチャルコントローラだけ、Bボタンを "離す入力" を遅延させることは出来ないかな?

例えばスマホではBボタンを離しても、0.5秒は押したままで判定されて、その隙にAボタンを押すみたいな。

スクリプト内では以下でコントローラの入力を取ってる。
UnityEngine.InputSystem.Controls.ButtonControl

自分が思いつくのは拡張メソッドとか?
スマホ判定したら、特定のボタンの wasReleasedThisFrame が来たら、何とかして遅延実行させるとか?
1-
あと 956 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.036s