基本上,我遇到的問題是平臺生成垂直,但它們轉到右上角(參見圖片)。因此玩家無法跳到平臺,而我不必增加他們的速度和跳躍值。我想讓平臺可以在隨機范圍內生成,也可以跳躍。
平臺生成代碼:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlatformGenerator : MonoBehaviour
{
public GameObject thePlatform;
public Transform generationPoint;
public float distanceBetween;
private float platformWidth;
public float distanceBetweenMin;
public float distanceBetweenMax;
// Start is called before the first frame update
void Start()
{
platformWidth = thePlatform.GetComponent<BoxCollider2D>().size.x;
}
// Update is called once per frame
void Update()
{
if(transform.position.y < generationPoint.position.y)
{
distanceBetween = Random.Range(distanceBetweenMin, distanceBetweenMax);
transform.position = new Vector3(transform.position.y platformWidth distanceBetween, transform.position.x, transform.position.z);
Instantiate(thePlatform, transform.position, transform.rotation);
}
}
}
平臺破壞者代碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlatformDestroyer : MonoBehaviour
{
public GameObject platformDestructionPoint;
// Start is called before the first frame update
void Start()
{
platformDestructionPoint = GameObject.Find("PlatformDestructionPoint");
}
// Update is called once per frame
void Update()
{
if(transform.position.x < platformDestructionPoint.transform.position.x)
{
Destroy(gameObject);
}
}
}
這是我正在經歷的影像。

uj5u.com熱心網友回復:
看起來像在
transform.position = new Vector3(transform.position.y platformWidth distanceBetween, transform.position.x, transform.position.z);
你翻轉了 X 和 Y,它可能應該是
transform.position = new Vector3(transform.position.x platformWidth distanceBetween, transform.position.y, transform.position.z);
順便說一句,你也可以簡單地寫成
transform.position = new Vector2(platformWidth distanceBetween, 0);
或者,如果您實際上更希望它們也是垂直的(如樓梯),您可能更愿意指的是例如
transform.position = new Vector2(platformWidth, distanceBetween);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/362086.html
