1

我很难在 Unity3d 中平移游戏对象的视图。我是脚本新手,我正在尝试为 Android 开发 AR(增强现实)应用程序。

我需要一个游戏对象(例如地板模型),从正常的自上而下视图,渲染为倾斜 45 度的“伪”iso 视图。由于游戏对象是倾斜的,我需要在其视图上有一个平移功能,利用四 (4) 个按钮(用于左、右、向前(或向上)、向后(或向下))。

问题是,我不能在论坛中使用任何已知的平移脚本片段,因为 AR 相机在场景中必须是静态的。

需要提到的是,我需要平移功能仅在等轴测视图(我已经使用另一个脚本计算)而不是自顶向下视图中处于活动状态。所以gameObject的轴的倾斜度应该没有问题吧?

接下来是两个状态的模型图像,渲染了游戏对象(模型地板)和我当前使用的脚本代码(来自 Unity 参考),这对我的需求来说不是很实用。

在此处输入图像描述

在此处输入图像描述

这是游戏对象向左移动的代码片段。对于其他动作,我使用相同的 -,+ 速度值的变化,但我只得到它向上,向下,而不是向前,向后移动:

#pragma strict

// The target gameObject.
var target: Transform;

// Speed in units per sec.
var speedLeft: float = -10;

private static var isPanLeft = false;


function FixedUpdate()
{
if(isPanLeft == true)
{
    // The step size is equal to speed times frame time.
    var step = speedLeft * Time.deltaTime;

    // Move model position a step closer to the target.
    transform.position = Vector3.MoveTowards(transform.position, target.position, step);
}
}

static function doPanLeft()
{
    isPanLeft = !isPanLeft;
}

如果有人好心地看看这篇文章,并就如何以最简单的方式编码此功能提出建议,那就太好了,因为我是新手?

此外,如果可以提供示例代码或教程,将不胜感激,因为我可以从中学到很多东西。提前感谢大家的时间和答案。

4

1 回答 1

0

如果我理解正确,您有一个具有固定旋转和位置的相机,并且您有一个想要从相机角度向上/向下/向左/向右移动的对象

要将对象旋转到一组角度,您只需执行

transform.rotation = Quaternion.Euler(45, 45, 45);

然后要移动它,您可以像这样在世界空间中使用相机向上/向右/向前移动它

transform.position += camera.transform.up;
transform.position -= camera.transform.right;

如果您的场景中只有一台摄像机,您可以通过以下方式访问其变换Camera.main.transform

当有人按下左箭头时如何移动它的示例

if(Input.GetKeyDown(KeyCode.LeftArrow))
{
    transform.position -= camera.transform.right;
}
于 2014-08-29T09:06:55.033 回答