1

我正在尝试制作以下相机平移 js 脚本,使其正常工作,这意味着左右平移相机。到目前为止,我所做的是将相机仅向左移动并返回其起始位置。我无法让它在被点击/触摸的 gui.button 上左右移动。

这是js脚本:

    #pragma strict

var target : GameObject;
var xpositionLeft = 10;
var xpositionRight = -10;
//var smooth : float = 5; // Don't know where should I put this var to make it pan smooth?

private static var isPanning = false;

function Update()
{
if(isPanning == true)
{
transform.position.x = target.transform.position.x;
transform.position.x = xpositionLeft;
    }
    else
    {
    transform.position.x = target.transform.position.x; // It only pan the camera left, not right!
    transform.position.x = xpositionRight;
    }
}

static function doPanning ()
    {
        isPanning = !isPanning;
    }

有人可以提供有关如何使此脚本正常工作的线索吗?我是 Unity 和编程的新手,因此非常欢迎任何帮助。提前感谢大家的时间和答案。

4

1 回答 1

1

您的代码有几个问题。首先,这些行transform.position.x = target.transform.position.x;没有任何效果,因为您会立即在下一行覆盖它。您的代码基本上只在和transform.position.x之间翻转。-1010

其次,您期望的行为与代码中的逻辑不匹配。你只有两个状态,isPanning true 和 false,但是你需要三个状态pan leftpan rightdo nothing

// how far the camera should move witch each click
var xPositionOffset = 10;

// -1 = left, 0 = do dothing, 1 = right
var panDirection = 0;

function Update()
{
    if (panDirection != 0) // pan left/right
    {
        transform.position.x = transform.position.x + (panDirection * xPositionOffset);
        panDirection = 0;
    }
}

现在,您只需要将变量设置为panDirection-1或者1如果您的按钮被按下,相机就会向那一侧移动得更远。

如果您在矢量算术方面遇到问题,请查看Unity 手册中的“理解矢量算术”一章。

上面的代码会移动相机不是很流畅,但是这样更容易理解基本概念。您可以使用该功能Vector3.MoveTowards来获得更平滑的运动,链接参考中显示的示例应该可以帮助您实现它。

于 2014-05-01T02:13:47.960 回答