主要思路就是将不同层的云分别实现飘动,这里我选择第一层云向右飘,第二层云像左飘,记录下初始位置,并不断比较位移的距离,若位移的距离超过一朵云的长度则回到初始位置(这是为了保证玩家肉眼无法发现云朵是循环飘动的,而认为一直是在平移飘动)
云层代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class SkyMove : MonoBehaviour
{
private Rigidbody2D rb;
Vector2 startPosition;
public float WeiYi=19.18f;//一块云的长度
public float skySpeed=0.5f;
public int direction=1;//云运动的方向
private void Start()
{
rb= GetComponent<Rigidbody2D>();
startPosition = rb.position;//初始位置
rb.velocity = new Vector2(direction*skySpeed, 0);
}
private void Update()
{
if(Math.Abs(startPosition.x-transform.position.x)>WeiYi)//云位移的绝对值若大于一块云的长度,就回到原位
{
Debug.Log("回到原位");
transform.position= startPosition;
}
}
}