[過去ログ] 【3Dゲームエンジン】Unity質問スレッド34 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
702(1): 2018/03/29(木)13:58 ID:6Os1P1Rs(1/3) AAS
>>701
アセットを買えば解決すると思います
703: 2018/03/29(木)15:11 ID:Zm0Ze4mh(2/4) AAS
>>702
アセットをアップグレードしてみましたが効果ありませんでした
704(1): 2018/03/29(木)17:09 ID:GLHVviMR(1/6) AAS
CameraFollowのやつ
SurvivalShooterのチュートの3
あれ挙動おかしい
Smoothing変えたらカメラの挙動変わりすぎ
視野角まで変わって、Clippingでカメラの前のオブジェクトが消えたりする。
Smoothing * Time.deltatimeがおかしくしてる原因と思うけど、改善するならどうしたらいいんだろ
705: 2018/03/29(木)17:12 ID:GLHVviMR(2/6) AAS
今日ちら見したDOTween使ってなんとか出来ないかしてみよう
706: 2018/03/29(木)17:49 ID:GLHVviMR(3/6) AAS
あ、わかった Lerpのtがチュートに従うと0.099999になる。
高さも10分の1になってyが1.5なってる。
どっかで桁間違えたか?
見直してくる
707(1): 2018/03/29(木)18:11 ID:GLHVviMR(4/6) AAS
Survival SHootingのチュートのミスわかった。
transform.position = Vector3.Lerp (transform.position, targetCamPos, smoothing * Time.deltaTime);
これを
float T = Smoothing * (1/ Time.deltaTime);
transform.position = Vector3.Lerp(Target.position, targetCamPos, T);
したら想定動作になった
なんでか教えて。
708: 2018/03/29(木)18:14 ID:GLHVviMR(5/6) AAS
これUnityスタッフの間違えじゃねえの
709: 2018/03/29(木)18:25 ID:Zm0Ze4mh(3/4) AAS
Photonを新しいプロジェクトにインポートしてPhoton以外のデータを写してみましたがだめでした
710: 2018/03/29(木)18:30 ID:Zm0Ze4mh(4/4) AAS
PhotonですがそもそもRigidBodyを与える以前から症状が起きていることが分かりました
同じような症状は見かけませんがどなたかご存じないでしょうか
711: 2018/03/29(木)18:51 ID:6Os1P1Rs(2/3) AAS
これはもうアセットを買うしか無いですね
712(1): 2018/03/29(木)19:38 ID:LaRMMmX4(1) AAS
>>704
orthoなのになんで視野角出てくんの?
713(1): 2018/03/29(木)19:52 ID:GpkWDXp0(1/2) AAS
>>707
おかしいのはそこじゃなくて座標の指定
LerpはAからBの補間を返すんだからAにはカメラの座標を入れろ
Target.positionってなんだよ、ふざけてんのか
714(1): 2018/03/29(木)20:01 ID:GpkWDXp0(2/2) AAS
>>701
たぶん必要なコンポーネントや設定が足りていないんだろうが、
何が足りていないのかはプロジェクト見ないことには分からないから、
ググって出てくるやり方を新しいプロジェクトで手当たり次第に試すのが良いよ
715(1): 2018/03/29(木)21:03 ID:GLHVviMR(6/6) AAS
>>712
はじめ見た感じクリッピング距離が原因のように思われる画面だったから。
実際は、Yの高さが、15から1.5になっててオブジェクトが切れてただけだが。
>>713
TargetはPlayerのTransformへの参照まで納められた変数だから。TargetCamPosはそのPlayerのポジションにPlayerとカメラのoffsetを足した位置。
チュートのFollowCamera.csコピペで丸写ししても同じバグ出る。
5はSmoothingで移動量じゃないんでかけること自体がおかしい。
だからDeltaTimeを逆数(1/Deltatime)にしたらうまくいった。
716(1): 2018/03/29(木)21:26 ID:KZf2IRaq(1) AAS
>>715
だから『今現在のカメラ位置』から次のカメラ位置に動かすんだろ
なんでプレイヤーの位置から次のカメラ位置に動かそうとしてるんだよ?
あとお前の計算式だが、
smoothing * Time.deltaTimeは「5 * 0.01666... = 0.08333...」
smoothing * (1 / Time.deltaTime)は「5 * 60 = 300」
Lerpのtには補間の割合を0.0-1.0の範囲で指定するんだからどっちが正しいか分かるな?
お前が想定通りと言ってるのはLerpに1.0を超える補間値を指定してBに直接ワープしてるだけなんだよ
717: 2018/03/29(木)21:49 ID:QSBKoT/M(1) AAS
leapに、デルタタイムだけ入れると、ずっと、1にならないからゴールしないんじゃ?
718(1): 2018/03/29(木)22:26 ID:6Os1P1Rs(3/3) AAS
スクリプトできない人はアセットを買うほうがいいですよ
719: 2018/03/30(金)00:02 ID:kZ+tQr4Q(1/8) AAS
>>716
チュートリアル通りだと何もしなくてもカメラの高さが1.5とかようするにゲーム開始前のカメラのポジション*0.1になるんだからしゃあないじゃない
720: 2018/03/30(金)00:05 ID:ZJPrD8pf(1/3) AAS
チュートリアルはある程度感覚をつかめたら、あとは見なくていいよ
721: 2018/03/30(金)00:13 ID:MeGK4UNG(1/4) AAS
>>718
アセットを買ったからこうなってるんですけど
722: 2018/03/30(金)00:15 ID:MeGK4UNG(2/4) AAS
>>714
原因はマスタークライアントが作ったのをクライアントでうごそうとしてたからみたいです
物理だけマスターでやって途中まではクライアントってやってたから2人で動かしちゃってたんですね
これ頻繁に変えるのはまずそうなんですよねぇ
723(1): 2018/03/30(金)00:17 ID:kZ+tQr4Q(2/8) AAS
private void FixedUpdate()
{
Vector3 targetCamPos = Target.position + offset;
Debug.Log(Time.deltaTime);
//float T = Smoothing * (1/ Time.deltaTime);
transform.position = Vector3.Lerp(Target.position, targetCamPos, Smoothing * Time.deltaTime); //←ここの結果がおかしい
Debug.Log(Smoothing * Time.deltaTime);
}
}
結果は
画像リンク
これをdeltaTime逆数にするだけで上手く行くんだしまあいんじゃね
724: 2018/03/30(金)00:20 ID:kZ+tQr4Q(3/8) AAS
このとき、Smoothingが5で設定してて、5*0.02すると、0.1なるんだよ。
725: 2018/03/30(金)00:27 ID:ZJPrD8pf(2/3) AAS
コンソ一ル表示は省略されるよ
726: 2018/03/30(金)00:29 ID:kZ+tQr4Q(4/8) AAS
Smoothingを50にしてもうまくいくけど、チュートじゃ5f書いてるし
727(1): 2018/03/30(金)00:34 ID:5sE7XTyv(1/2) AAS
逆数にして上手くいくのはたまたま数値が合っただけなんじゃね?
FixedUpdateのフレームレートを変更しても期待通りの動作する
728: 2018/03/30(金)00:36 ID:5sE7XTyv(2/2) AAS
>>727
最後のクエスチョンマークが抜けたw
729: 2018/03/30(金)00:43 ID:8i/x7c2z(1/2) AAS
targetCameraPosに近付くにつれてカメラの移動量を減らすためにやってるからSmoothing * Time.deltaTimeであってるよ。
まあ、これかなり「それっぽく動くように」書いてあるコードだし、fixedDeltaTimeじゃないから良い例ではないしSmoothingをちょっと変えただけで極端に変化しちゃうけど。
床が見切れるのはoffsetの値の問題だね。
730: 2018/03/30(金)00:55 ID:8i/x7c2z(2/2) AAS
カメラの移動をふわーっとスムージングさせたいわけじゃなくて、ターゲットに張り付かせたいならtransform.position = targetCamPosでいい。
というかTarget.positionとtargetCamPosのLeapだと、見る対象とカメラ目的地との中間にカメラが存在し続けることになるから、想定よりずっとカメラが寄ってると思う。
どういう処理になってるのかよくわかってないみたいだし、空のGameObjectにtargetCamPosを常に設定し続けて、どういう位置関係になってるか理解したほうがいいよ。
731(1): 2018/03/30(金)01:21 ID:kZ+tQr4Q(5/8) AAS
smoothing * Time.deltaTimeも何回もFixedUpdateで回ってこようと一定のはずだし
変わるわけない。
デルタタイムは加算じゃなく、毎回一定 Smoothingも変わらない。
逆にチュートリアルのやつみてなんであれでうまく動くのか不思議。
Time.deltatimeを累算するなら、
FixedUpdateよりまえに、
private float duration = 0;
//で宣言して、
private void FixedUpdate()
{
Vector3 targetCamPos = Target.position + offset;
duration += Time.deltaTime;
transform.position = Vector3.Lerp(Target.position, targetCamPos, Smoothing * duration);
これだとSmoothingに小さい数字入れたらなめらかにカメラ動くが。
上下前次1-新書関写板覧索設栞歴
あと 271 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.010s