尝试使用在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);
}
}
}
答案 0 :(得分:1)
可能是因为速度是浮点值。如果尚未阅读,则应仔细阅读。
长话短说,您并没有考虑到该值可能会跌到-100以下,而只是在重置它。
如果您翻译它,则将保留超出-100范围的转换可能已经消失的所有额外距离。
尝试以下方法:
If (transform.position.z < -100){
transform.Translate(new Vector3(0,0,200));
}
编辑 应该是Z值,而不是X