Unity获取屏幕边缘与检测物体是否在视野内

Unity获取屏幕边缘与检测物体是否在视野内

1. 需求描述

当游戏打包发布时,需要解决目前市场上各式各样屏幕比例的自适应问题。
UI方面只要在编辑器中设置好就问题不大,主要是游戏实体的缩放与生成和销毁位置的问题。

需求如下:

  • 陆地块的生成位置必须在屏幕外
  • 陆地块的开始运动位置必须在屏幕右侧边缘
  • 陆地块运动至屏幕外需要销毁
  • 陆地块右侧边缘位于屏幕右侧边缘时,需要启动下一个陆地块
  • 时间环无论在什么屏幕下都应该充满背景
3.3.4.2 代码实现

想要实现如上需求,就必须要知道屏幕的边缘在哪里,也就是将屏幕的边缘坐标从屏幕坐标转化为世界坐标。可以通过如下代码实现:

public float leftBorder;
public float rightBorder;
public float topBorder;
public float downBorder;
public float height;
public float width;
public Vector3 scale;
public void initBorder()
{
    //世界坐标的右上角  因为视口坐标右上角是1,1,点
    Vector3 cornerPos = Camera.main.ViewportToWorldPoint(new Vector3(1f, 1f,Mathf.Abs(-Camera.main.transform.position.z)));
    //世界坐标左边界
    leftBorder = Camera.main.transform.position.x - (cornerPos.x - Camera.main.transform.posit
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值