クイック免責事項:私は非常に高度なC#ユーザーではなく、Pythonのような言語にもっと慣れているので、答えが私の目の前にあれば謝ります。段ボールを移動する
デモシーンをベースにしてGoogle Cardboardのゲームを少し作っています。私は "Trigger Pull"をチェックし、段ボールのカメラを10単位アップするコードをいくつか持っています。
//Checks For Magnet Trigger
if (Cardboard.SDK.Triggered)
{
//moves player up at a rate of 10u/s
transform.Translate(Vector3.up * 10);
Debug.Log("Triggered_Head");
//Tell Cardboard to maintain new position
}
現在のところ、これはマグネットプルを検出するのに本当にうまく機能し、ボールボードを変換します。問題は、翻訳の直後に段ボールがベース位置にテレポートされるということです。
現在、私はUpdateHead()メソッドに挿入し、このコードを持ってCardboardHead.csから、そうのような(?):これを行う
// Compute new head pose.
private void UpdateHead() {
if (updated) { // Only one update per frame, please.
return;
}
updated = true;
Cardboard.SDK.UpdateState();
if (trackRotation) {
var rot = Cardboard.SDK.HeadPose.Orientation;
if (target == null) {
transform.localRotation = rot;
} else {
transform.rotation = target.rotation * rot;
}
}
if (trackPosition) {
Vector3 pos = Cardboard.SDK.HeadPose.Position;
if (target == null) {
transform.localPosition = pos;
}
else {
transform.position = target.position + target.rotation * pos;
}
//Checks For Magnet Trigger
if (Cardboard.SDK.Triggered)
{
//moves player up at a rate of 10u/s
transform.Translate(Vector3.up * 10);
Debug.Log("Triggered_Head");
//Tell Cardboard to maintain new position
}
}
if (OnHeadUpdated != null) {
OnHeadUpdated(gameObject);
}
}
は、右のすべてを行いますが、場所がで(ほぼ瞬時に戻され次のフレーム私は仮定します)。だから私の質問です:私はどのように変換スティックを作るのですか、これを処理するための良い方法がありますか?
こんにちは、Cardboard SDKのドキュメントを見てみましたが、Googleがかなりの変更を加えたようですが、使用しているバージョンは自分のサイトにもう記録されていません。だから、いくつかの一般的なアドバイス:1#位置を更新する行にデバッグポイントを置く。 2#そのコード行に来る値を確認します。どの値が間違っているかを知ると、どこに原因があるのかが分かります。ヘッドが移動しなくなったときに0になる「ワンタイムローテーション」ベクトルを使用するため、Cardboard SDKが位置をリセットすることがあります。 – Kamen
Cardboard.SDK.Triggeredを確認する前に問題が発生しています。その位置を設定します(実際には複数回)。最初にすべての計算とチェックを行い、最後に実際の位置を設定します(必要な場合) – yes
@Kamen先週のみSDKをダウンロードしました。古いバージョンを入手した場合は奇妙です。たぶん私はそれをもう一度ダウンロードしてチェックします。 PS:SDKドキュメントを私にリンクできますか?私はそれらを見つけるように見えない。 – Rexoanimation