用多维数据集创建简单的无限移动平台

时间:2019-03-18 08:18:09

标签: c# unity3d

尝试使用在z上的 3个比例为70的立方体创建simple endless moving platform(播放器不会向前移动,只会向左/向右移动)。 RepositionPlatform脚本附加到负责移动的每个平台/多维数据集,并检查每个平台的z position以及是否为<= -100.0f, then position is changed to (0,0,200.0f).

问题有时是平台(多维数据集)之间有一点缝隙,或者是我不希望有一点重叠。

平台应该一个接一个地放置,没有任何间隙或重叠!!!

任何人都可以通过查看脚本找到问题或提出其他更好的方法吗?

以下脚本已附加到3个平台游戏对象上!!!

public class RepositionPlatform : MonoBehaviour
{
    private GameObject platformGO;

    [SerializeField]
    private float speed;

    // Start is called before the first frame update
    void Start()
    {
        platformGO = this.gameObject;
        Debug.Log("In RepositionPlatform Start method - "+ platformGO.name);
    }

    // Update is called once per frame
    void Update()
    {

        Debug.Log("In RepositionPlatform Update Method- " + platformGO.name);

        platformGO.transform.Translate(Vector3.back * Time.deltaTime * speed);

        Transform platformTransform = platformGO.transform;
        if(platformTransform.position.z <= -100.0f)
        {
            platformTransform.position = new Vector3(0,0,200.0f);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

可能是因为速度是浮点值。如果尚未阅读,则应仔细阅读。

长话短说,您并没有考虑到该值可能会跌到-100以下,而只是在重置它。

如果您翻译它,则将保留超出-100范围的转换可能已经消失的所有额外距离。

尝试以下方法:

If (transform.position.z < -100){

  transform.Translate(new Vector3(0,0,200));

}

编辑 应该是Z值,而不是X