unity--相机跟随与屏幕自适应的实现

文章介绍了在Unity3D中如何实现相机跟随游戏对象移动以及屏幕尺寸变化时的自适应调整。通过使用LateUpdate方法来保持相机与主角的距离,同时在Start函数中计算屏幕的长宽比,动态调整相机的orthographicSize以实现屏幕自适应。
摘要由CSDN通过智能技术生成

相机跟随与屏幕自适应的实现

相机跟随

如何让相机跟着人物跑呢?这是个不太大但是需要解决的问题。

思路就是用LateUpade(保证在所有更新函数都调用完调用)实时监测相机的位置,让他一直和游戏主角保持一定的距离。

开始执行:

  1. 创建个脚本给相机绑上

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rvlSY1YZ-1679127378176)(C:/Users/86188/AppData/Roaming/Typora/typora-user-images/image-20230318110528287.png)]

然后我们开始写里面的代码。

  1. 写代码

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class MainCameraController : MonoBehaviour
    {
       //青蛙位置的实体,用于获取青蛙坐标
       public Transform frog;
       //用于表示相机和青蛙之间的位置差
       public float offsetY;
    
       private void LateUpdate() 
       {
          //相机的位置
          transform.position = new Vector3(transform.position.x, frog.transform.position.y + offsetY, transform.position.z);
       }
    
    }
    
    
  2. 把参数设置下
    在这里插入图片描述

完成!

屏幕自适应

思路:先调节好我们需要的大致基础大小,之后再乘长宽比。

上菜(代码)!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MainCameraController : MonoBehaviour
{

   //基础大小
   public float zoomBase;
   //长宽比
   private float ratio;

   private void Start() {
      //求出长宽比
      ratio = (float)Screen.height / (float)Screen.width;
      Camera.main.orthographicSize = zoomBase * ratio * 0.5f;
   }

}

这段代码绑在相机上,我们调节下参数:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mAhhtakP-1679127341281)(C:/Users/86188/AppData/Roaming/Typora/typora-user-images/image-20230318112351557.png)]
总代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MainCameraController : MonoBehaviour
{
   //青蛙位置的实体,用于获取青蛙坐标
   public Transform frog;
   //用于表示相机和青蛙之间的位置差
   public float offsetY;
   //基础大小
   public float zoomBase;
   //长宽比
   private float ratio;

   private void Start() {
      //求出长宽比
      ratio = (float)Screen.height / (float)Screen.width;
      Camera.main.orthographicSize = zoomBase * ratio * 0.5f;
   }

   private void LateUpdate() 
   {
      //相机的位置
      transform.position = new Vector3(transform.position.x, frog.transform.position.y + offsetY, transform.position.z);
   }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值