停止旋转以在游戏对象上单击一下

时间:2016-11-16 16:16:56

标签: unity3d rotation unity5

我有一个统一游戏,其中包含一个旋转游戏对象,可以在点击时提高速度。

我的问题是游戏无法正常运行。现在,如果我点击屏幕的任何部分,它会增加游戏对象的旋转速度。另一方面,如果我将手指放在屏幕上,游戏对象开始减速,然后开始向相反方向旋转。

当我点击它时,我希望对象的旋转增加,而不是仅仅点击屏幕的任何部分。此外,我不知道为什么按住可以反转旋转方向。

var speed = 1;
var click = 0;

Screen.orientation = ScreenOrientation.LandscapeLeft;

function Update (){

{
     transform.Rotate(0,0,speed);
}

if(Input.GetMouseButton(0))
{

    if(speed != 0)
    {
        speed = 0;
    } else {
        click++;
        speed = click;
    }

2 个答案:

答案 0 :(得分:0)

您必须使用输入。 GetMouseButtonUp Input.GetMouseButtonDown ,而不是 Input.GetMouseButton ,此方法用于钳制。

尝试使用此代码:

var speed = 1;
var click = 0;

Screen.orientation = ScreenOrientation.LandscapeLeft;

function Update (){

{
     transform.Rotate(0,0,speed);
}

if(Input.GetMouseButtonDown(0))
{

    if(speed != 0)
    {
        speed = 0;
    } else {
        click++;
        speed = click;
    }

答案 1 :(得分:0)

这里有几个问题:

首先:

要仅在单击对象时提高速度,请使用来自摄像头的光线投射,并检查它是否会撞击您的对象。您的对象需要一个对撞机组件才能使其正常工作。

RaycastHit hit;
Ray ray = camera.ScreenPointToRay(Input.mousePosition);

if (Physics.Raycast(ray, out hit)) 
{
    Transform objectHit = hit.transform;
    objectHit.Rotate(0,0,speed);
}

请参阅https://docs.unity3d.com/Manual/CameraRays.html - >光线投射部分,了解更多信息。

其次:

Input.GetMouseButtonDown(..) // returns true at the instance your mouse button transits from up to down
Input.GetMouseButton(..) // returns true as long as your mouse button is held down

如果您想在点击它时做某事,请在Input.GetMouseButtonDown(..)方法中使用Update()