最近のインターンシップ プロジェクトでは、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);
}
}
その後、パフォーマンスを向上させるために、スムージングや弾性効果の追加などについて検討します。