c# - 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++ - 遍历抽象类的向量
- c++ - 嵌套模板类的模板类模板参数的特化
- android - 如何使用字符串资源而不是硬编码字符串来设置 ViewPager 选项卡标题
- css - CSS媒体查询问题
- java - Java:Solidity solcJ-all 和 etheriumJ - 无法添加依赖项
- php - 多维数组 - 仅打印特定键值
- javascript - 如何在 PixelAdmin 模板中将 select2 依赖插件更新到版本 4.0.6
- struts2 - org.apache.tiles.definition.NoSuchDefinitionException:找不到名为“addCustomer.tiles”的定义
- python - 使用带有正则表达式分隔符的 read_csv 读取文本文件
- javascript - Javascript如何一次创建多个类的对象