gpt4 book ai didi

c# - 四处移动纸板

转载 作者:行者123 更新时间:2023-11-30 23:25:23 26 4
gpt4 key购买 nike

快速免责声明:我不是一个非常高级的 C# 用户,更习惯于 python 等语言,所以如果答案就在我面前,我深表歉意。

我一直在为 Google Cardboard 制作一个小游戏,使用演示场景作为基础。我有一些代码可以检查“Trigger Pull”,然后应该将 Cardboard 相机向上移动 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
}

目前这对于检测磁铁拉力非常有效,而且它确实平移了纸板。问题是纸板在平移后几乎立即被传送回基本位置。

目前我已将此代码插入到 CardboardHead.cs 的 UpdateHead() 方法 (?) 中,如下所示:

      // 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);
}
}

这样做一切正常,但位置几乎立即恢复(我假设在下一帧)。所以我的问题是:我如何使变换保持不变,有没有更好的方法来处理这个问题?

最佳答案

好吧,我想出了如何处理运动,我将解决方案发布在这里,以供将来无法弄清楚的人使用。快速说明:我确实更新到了最新版本的 SDK,尽管这应该没有什么区别,除了命名。

所以,第 1 步:

创建一个对象作为您的 Controller 。我只是使用了 Assets 包中的一个原型(prototype)立方体,但不管怎样都行(最好是空对象)。

将这个物体或多或少地放在两个相机的中心点。

将您的 GvrMain 对象作为 Controller 对象的父级(通过将其拖到 Controller 对象上)以及您希望与播放器一起移动的任何其他组件(枪支、GUI 等)

第 2 步:

为 Controller 对象创建脚本。

在 Update() 方法中,添加以下行:

if (GvrViewer.Instance.Triggered)
{
transform.Translate(Vector3.up)
}

对于旧版本,将 GvrViewer.Instance 替换为 Cardboard.SDK

根据自己的喜好自定义您的 Action ,任何正常的统一功能都应该有效。

一些不足:

  • 您必须反复按下触发器,使用 while() 似乎会破坏统一性。这看起来很容易修复

  • 代码片段立即向上转换 1。不确定如何以稳定的加速度进行转换。

希望这对遇到我问题的人有所帮助。

关于c# - 四处移动纸板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37310190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com