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