【问题标题】:Camera Movement on Android UnityAndroid Unity 上的相机移动
【发布时间】:2014-08-01 14:37:27
【问题描述】:

我在我的网络项目中使用正交相机,这是让我移动相机的代码:

 if (Input.GetKey(KeyCode.UpArrow) && Camera.main.transform.position.y < CameraYLimitUp)//Up Camera Mvt
        { transform.Translate(-Vector3.up * Time.deltaTime * 20); }

        if (Input.GetKey(KeyCode.DownArrow) && Camera.main.transform.position.y > CameraYLimitDown)//Down Camera Mvt
        { transform.Translate(Vector3.up * Time.deltaTime * 20); }

        if (Input.GetKey(KeyCode.LeftArrow) && Camera.main.transform.position.x > CameraXLimitLeft)//Left Camera Mvt
        { transform.Translate(Vector3.right * Time.deltaTime * 20); }

        if (Input.GetKey(KeyCode.RightArrow) && Camera.main.transform.position.x < CameraXLimitRight)//Right Camera Mvt
        { transform.Translate(Vector3.left * Time.deltaTime * 20); }

现在我正在尝试将项目转换为 Android 并且我正在更改相机的脚本,我触摸 dvce 屏幕,我可以根据手指的移动移动相机但是当我想限制相机向左移动时, 对, 像网络播放器版本一样上下边, 它不起作用, 当我添加这些条件时 [Camera.main.transform.position.y CameraYLimitDown] , [Camera.main.transform.position.x > CameraXLimitLeft] , [Camera.main.transform.position.x

public Vector2 startPos;
public Vector2 endPos;
public bool fingerHold = false;

private float CameraYLimitUp = 18;
private float CameraYLimitDown = -5f;
private float CameraXLimitRight = 21;
private float CameraXLimitLeft = -21;

   if(Input.touchCount > 0)
    {                      
    Touch touch = Input.GetTouch(0);
    if(touch.phase == TouchPhase.Began)
    {      
        startPos = touch.position;             
        fingerHold = true;
    }
    else if(touch.phase == TouchPhase.Moved)
    {  
        endPos = touch.position;               
    }
    else if(touch.phase == TouchPhase.Ended)
    {  
        fingerHold = false;                    
    }
}
if(fingerHold)
{

    float deltaX = endPos.x - startPos.x;      
    float deltaY = endPos.y - startPos.y;      
    bool horizontal = false;

    if(Mathf.Abs (deltaX) > Mathf.Abs (deltaY)) 
        horizontal = true;                      

    if(horizontal){
        if (deltaX < 0 && Camera.main.transform.position.x < CameraXLimitRight)
        {
            transform.Translate(Vector3.right * Time.deltaTime * 25);
        }
        else if (deltaX > 0 && Camera.main.transform.position.x > CameraXLimitLeft)

            transform.Translate(Vector3.left * Time.deltaTime * 25);
    }
    else{ 
        if (deltaY < 0 && Camera.main.transform.position.y < CameraYLimitUp)
            transform.Translate(Vector3.up * Time.deltaTime * 25);
        else if (deltaY > 0 && Camera.main.transform.position.y > CameraYLimitDown )
            transform.Translate(Vector3.down * Time.deltaTime * 25);
    }
    }

感谢您的帮助

【问题讨论】:

    标签: android camera unity3d


    【解决方案1】:

    不要使用 Camera.main。而是将变量 public GameObject MyCamera 并传递相机 GameObject。我记得Camera.main sometomes在android上有问题。

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多