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

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

相机跟随

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

思路就是用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);
   }
}

猜你喜欢

转载自blog.csdn.net/abaidaye/article/details/129638539