UNITY视差地图的偏移

最近实习项目中要求用2D项目实现3D效果,我这技术美术还是太菜不能弄出PBR模型,也只能帮他们做做视差地图了,平面级的模版如下,也就是相对于每一帧摄像机的移动再根据远近关系做偏移罢了。

using UnityEngine;

public class MAPmoveManager : MonoBehaviour
{
	public Transform bacKGrond;
	public Transform frontCloud;
	
	public float offsetFrontSpeed;
	public float offsetBackSpeed;//拿到前中后景的坐标组件,把偏移参数暴露出来。

	private Transform cam;

	private Vector3 preCamPos;
	// Use this for initialization
	void Awake()
	{
		cam = Camera.main.transform;
	}
	void Start ()
	{
		preCamPos = cam.position;//要拿到第一帧的位置,不然有一个值
	}
	
	// Update is called once per frame
	void Update ()
	{
		Vector2 cammove = (preCamPos - cam.position);//拿到每一帧摄像机的偏移
		backgroundMove(cammove);//对各个层级做偏移
		CloudgroudMove(cammove);
		preCamPos = cam.position;//更新摄像机位置
	}

	void backgroundMove(Vector2 target)
	{
		bacKGrond.position = new Vector3(bacKGrond.position.x + target.x * offsetBackSpeed,
			bacKGrond.position.y + target.y * offsetBackSpeed, bacKGrond.position.z);
	}

	void CloudgroudMove(Vector2 target)
	{
		
		frontCloud.position = new Vector3(frontCloud.position.x + target.x * offsetFrontSpeed,
			frontCloud.position.y + target.y * offsetFrontSpeed, frontCloud.position.z);
	}
}

后续考虑做平滑,加上弹力效果等,有更好的表现。

猜你喜欢

转载自blog.csdn.net/qq_53211468/article/details/127298368
今日推荐