地面に接した時に地面のノーマル方向に角度を変える(突き刺さらないようにする)挙動をやってみたかったんですが
// (前段の変数定義は同じ) float duration = 1.0 / 8.0; float fps = 1.0 / @TimeInc; float amount_per_frame = 1.0 / (duration * fps); float amount = 0.1; // --- 処理の実行 --- if (i@hitnum == 1) { // 保存しておいた法線ベクトルから、目標の向きを生成 vector4 target_orient = quaternion(v@hitnml); // 現在の向きから目標の向きへ滑らかに補間 @orient = slerp(@orient, target_orient, amount_per_frame); // 回転を停止 @w = {0, 0, 0}; }
上記popwrangleをpostsolverに繋ぐと最初からY軸方向を向き続けます
geometry Spread sheetを見てもhitnumの挙動は正しいように見えるんですが、全フレームでif文が発火してしまっているように見えます
根本的な所で勘違いをしていると思いフォーラムに投げさせて頂きました
お手数おかけしますが、ご助言いただけると幸いです