我目前有一个名为“block”的游戏对象,两个长立方体彼此相邻,两者之间有间隙。现在,当用户触摸屏幕并向左或向右拖动时,该块也会向该方向移动。现在我正在尝试设置边界,以便它们可以向左或向右方向上移动一定量。但是我怎么能这样编码所以它对于不同的屏幕是相同的,例如iphone ipad等。
我目前使用的代码使得块彼此重叠,摆脱了需要存在的差距。我该如何解决这个问题。代码如下:
public float speed = 0.0F;
void Update() {
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {
// Get movement of the finger since last frame
Vector3 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
// Move object across XY plane
transform.Translate(touchDeltaPosition.x * speed, 0, 0);
Vector3 boundaryVector = transform.position;
boundaryVector.x = Mathf.Clamp (boundaryVector.x, -1f, 1f);
transform.position = boundaryVector;
}
}
答案 0 :(得分:1)
对于屏幕尺寸问题,我建议您在背景中放置一些Image Ui,然后根据不同的分辨率设置它使用anchor
属性和。
使高宽比0.5,将UI比例设置为屏幕尺寸......所有这些仅在Inspector
。
从Transform
获取左右边界值,然后在block
gameobj脚本中使用它,如下所示:
//windows specific code
float x=Input.GetAxis ("Horizontal");
if (x == 0) {
Stop ();
} else if (x > 0) {
MoveRight ();
} else if (x < 0) {
MoveLeft ();
}
pos = transform.position; //left //right
pos.x=Mathf.Clamp (pos.x, "your boundry min to", "Your boundry max");
transform.position = pos;
对于重叠问题,你可以利用Block中的父/子属性。使另一个孩子成为另一个......这样如果你向左移动,右边的块也将向左移动,它们不会重叠.... / p>