【发布时间】:2020-12-26 21:25:59
【问题描述】:
我正在制作一个无尽的汽车驾驶游戏,我想在玩家汽车靠近一辆敌车时随机调用其中一个 switchLane 函数。关键是当你靠近时让其他一些汽车切换到随机车道。我正在寻找的主要内容是每次靠近时随机调用这 4 个 switchLane 函数之一的方法。
public class EnemyScript : MonoBehaviour
{
public float speed;
private GameObject playerTransform;
private GameObject enemyCarPrefab;
private float distanceToNextCar;
public float distance;
private float roadWidth;
private float lane1 = 7.25f;
private float lane2 = 2.45f;
private float lane3 = 2.4f;
private float lane4 = 7.3f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
playerTransform = GameObject.FindGameObjectWithTag("Player");
enemyCarPrefab = GameObject.FindGameObjectWithTag("BaseCar");
distanceToNextCar = enemyCarPrefab.transform.position.z - distance;
if (playerTransform.transform.position.z > distanceToNextCar)
{
switchLane1();
switchLane2();
switchLane3();
switchLane4();
}
}
private void switchLane1()
{
Vector3 targetPos1 = new Vector3(-lane1, 0, 0);
transform.position += (targetPos1 * speed * Time.deltaTime);
if (transform.position.x <= -lane1)
{
Vector3 newPositionLeft = new Vector3(-lane1, transform.position.y, transform.position.z);
transform.position = newPositionLeft;
}
if (transform.position.x >= lane1)
{
Vector3 newPositionRight = new Vector3(lane1, transform.position.y, transform.position.z);
transform.position = newPositionRight;
}
}
private void switchLane2()
{
Vector3 targetPos2 = new Vector3(-lane2, 0, 0);
transform.position += (targetPos2 * speed * Time.deltaTime);
if (transform.position.x <= -lane2)
{
Vector3 newPositionLeft = new Vector3(-lane2, transform.position.y, transform.position.z);
transform.position = newPositionLeft;
}
if (transform.position.x >= lane2)
{
Vector3 newPositionRight = new Vector3(lane2, transform.position.y, transform.position.z);
transform.position = newPositionRight;
}
}
private void switchLane3()
{
Vector3 targetPos3 = new Vector3(lane3, 0, 0);
transform.position += (targetPos3 * speed * Time.deltaTime);
if (transform.position.x <= -lane3)
{
Vector3 newPositionLeft = new Vector3(-lane3, transform.position.y, transform.position.z);
transform.position = newPositionLeft;
}
if (transform.position.x >= lane3)
{
Vector3 newPositionRight = new Vector3(lane3, transform.position.y, transform.position.z);
transform.position = newPositionRight;
}
}
private void switchLane4()
{
Vector3 targetPos4 = new Vector3(lane4, 0, 0);
transform.position += (targetPos4 * speed * Time.deltaTime);
if (transform.position.x <= -lane4)
{
Vector3 newPositionLeft = new Vector3(-lane4, transform.position.y, transform.position.z);
transform.position = newPositionLeft;
}
if (transform.position.x >= lane4)
{
Vector3 newPositionRight = new Vector3(lane4, transform.position.y, transform.position.z);
transform.position = newPositionRight;
}
}
}
【问题讨论】:
标签: c# function unity3d random