[Unity学习] 背景视差因子计算,远近背景移动距离差

    public Camera cam;
    public Transform trans;
    Vector2 startPosiotion;
    float startZ;

    //此物距离trans的z距离
    private float zDistance => transform.position.z - trans.transform.position.z;


    void Start()
    {
        startPosiotion = transform.position;
        startZ = transform.position.z;
    }

    // Update is called once per frame
    void Update()
    {
        // 相机移动距离减初始距离,获取相机偏移距离
        Vector2 camMove = (Vector2)cam.transform.position - startPosiotion;

        //获取人物前还是后,相机前用近裁剪面,后用远裁剪面
        float clippingPlane = cam.transform.position.z + (zDistance > 0 ? cam.farClipPlane : cam.nearClipPlane);

        //计算视差因子
        float parallaxFactor = Mathf.Abs(zDistance) / clippingPlane;

        //获取背景需要偏移的x,y位置
        Vector2 backgroundPos = startPosiotion + camMove * parallaxFactor;

        //因为是2d,所以z不变
        Vector3 newPosition = new Vector3(backgroundPos.x, backgroundPos.y, startZ);

        transform.position = newPosition;
    }

转载至 链接

相关推荐

  1. 【CV】计算机视觉中的特征追踪与背景处理

    2024-06-10 20:46:02       37 阅读
  2. unity专题(1)背景图片的设置

    2024-06-10 20:46:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-10 20:46:02       169 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-10 20:46:02       185 阅读
  3. 在Django里面运行非项目文件

    2024-06-10 20:46:02       155 阅读
  4. Python语言-面向对象

    2024-06-10 20:46:02       169 阅读

热门阅读

  1. PostgreSQL:在CASE WHEN语句中使用SELECT语句

    2024-06-10 20:46:02       43 阅读
  2. fastapi实例

    2024-06-10 20:46:02       40 阅读
  3. 生物神经网络 原理分析研读03

    2024-06-10 20:46:02       45 阅读
  4. 受够了“系统异常”!

    2024-06-10 20:46:02       46 阅读
  5. cell的复用机制和自定义cell

    2024-06-10 20:46:02       58 阅读
  6. Python 函数

    2024-06-10 20:46:02       53 阅读