[英]Camera Movement on Android Unity
我在Web项目中使用正交摄影机,这是使我移动摄影机的代码:
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 <CameraYLimitUp],[Camera.main.transform.position.y> CameraYLimitDown],[Camera。 main.transform.position.x> CameraXLimitLeft],[Camera.main.transform.position.x <CameraXLimitRight],代码如下:
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);
}
}
谢谢你的帮助
不要使用Camera.main。 而是将变量设为GameObject MyCamera并传递相机GameObject。 我记得Camera.main sometomes在Android上有问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.