首页 > 解决方案 > Unity2D:播放时最大化时玩家边界增加

问题描述

我创建了一个边界来阻止我的玩家离开我的游戏中的某个区域,我通过向我的场景中添加一个立方体创建了这个边界,并创建了一个脚本,使立方体适应相机宽度的一半大小(更新中)。在我的播放器脚本中,我有一个函数可以防止我的播放器离开立方体边界。即使我调整了编辑器的宽度,它也能完美运行,但是,当我在“播放时最大化”上玩游戏时,边界的宽度会最大化,而不是将边界减半到我喜欢的大小。我担心这个是因为,我想把我的游戏放在手机上,我不确定最大化播放是否适合手机尺寸,或者在正常尺寸编辑器中玩是否更适合普通的安卓手机?谢谢!

边界脚本:

public BoxCollider2D cube;
void Start()
{
    cube.size = new Vector2 (240, 0.4f);  //240
}
void Update()
{
    float height = Camera.main.orthographicSize * 1.3f;
    float width = height * Screen.width/ Screen.height; // basically height * screen aspect ratio
    cube.transform.localScale = new Vector3(width/10f, width/11f, width/10f);
    Debug.Log (width);
} 

新更新

玩家脚本:

public BoxCollider2D cube;
public float moveSpeed = 3f;


void Update () {

if (Input.GetMouseButton(0)) {
     var targetPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
     targetPos.z = transform.position.z;
     transform.position = Vector3.MoveTowards(transform.position, targetPos, moveSpeed * Time.deltaTime);
 }

void LateUpdate () {
    var left = Camera.main.ViewportToWorldPoint (Vector3.zero).x; 
    var right = Camera.main.ViewportToWorldPoint (Vector3.one).x; 
    float x = transform.position.x; 
    if (transform.position.x <= left + cube.bounds.extents.x) { 
        x = left + cube.bounds.extents.x; 
    } else if (transform.position.x >= right - cube.bounds.extents.x) {
        x = right - cube.bounds.extents.x; 
    }
    transform.position = new Vector3 (x, transform.position.y, transform.position.z);
} 

标签: c#unity3d

解决方案


推荐阅读