zoukankan      html  css  js  c++  java
  • unity2D背景移动补偿从而获得3d错觉效果

    2d平台跳跃游戏当相机移动的时候背景跟随进行微调移动,从而使得玩家获得3d的错觉

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

    public class BackGroundParallax : MonoBehaviour {

    public Transform[] backgrounds;//所有的背景层,这里,离玩家最近的背景的下标i最小,当i足够大时,背景和相机是一起位移的,比如真实世界里,人走动的时候,周围的房屋都向后移动,而天空中的星星却看起来没有移动过
    public float parallaxScale;//相对相机的移动补偿的比例值
    public float parallaxScaleReductionFactor;//对于不同的背景层的移动补偿的差值比例
    public float smoothing;

    private Transform cam;
    private Vector3 previousCamPos;//相机在上一帧的位置

    // Use this for initialization
    void Start () {
    cam = Camera.main.transform;
    previousCamPos = cam.position;
    }

    // Update is called once per frame
    void Update () {
    float parallax = (previousCamPos.x - cam.position.x) * parallaxScale;//根据相机的单帧位移获得补偿值大小

    for (int i = 0; i < backgrounds.Length; i++) {
    //获得位移的x值,i*parallaxScaleReductionFactor得到不同背景层的补偿差
    float backgroundTargetPosX = backgrounds[i].position.x + parallax * (i*parallaxScaleReductionFactor+1);

    Vector3 backgroundTargetPos = new Vector3(backgroundTargetPosX, backgrounds[i].position.y, backgrounds[i].position.z);
    backgrounds[i].position = Vector3.Lerp(backgrounds[i].position,backgroundTargetPos, smoothing * Time.deltaTime);
    }
    previousCamPos = cam.position;
    }
    }

  • 相关阅读:
    使用shell脚本对Linux系统和进程资源进行监控
    C++中string类的方法
    [leetcode] Trapping Rain Water
    Jenkins系列-Jenkins用户权限和角色配置
    ssh免秘钥登录
    Jenkins系列-Jenkins通过Publish over SSH插件实现远程部署
    Jenkins系列-Jenkins添加git密钥对
    Jenkins系列-Jenkins插件下载镜像加速
    Jenkins系列-Jenkins初始化配置
    Jenkins系列-Jenkins忘记密码的修复方法
  • 原文地址:https://www.cnblogs.com/xiaoahui/p/9998165.html
Copyright © 2011-2022 走看看