- 最好的方法是使用一个列表来存储障碍物的位置,并在生成新障碍物之前检查列表中是否已经存在相近的位置。这里有一个简单的例子:
using System.Collections.Generic;
using UnityEngine;
public class ObstacleSpawner : MonoBehaviour
{
public float minX = -10f;
public float maxX = 10f;
public float minY = -10f;
public float maxY = 10f;
public float obstacleSize = 1f;
public float spawnInterval = 1f;
private List<Vector2> obstaclePositions = new List<Vector2>();
private void Update()
{
if (Random.value < spawnInterval)
{
Vector2 position = GenerateRandomPosition();
if (IsPositionValid(position))
{
SpawnObstacle(position);
}
}
}
private Vector2 GenerateRandomPosition()
{
float x = Random.Range(minX, maxX);
float y = Random.Range(minY, maxY);
return new Vector2(x, y);
}
private bool IsPositionValid(Vector2 position)
{
foreach (Vector2 existingPosition in obstaclePositions)
{
if (Vector2.Distance(position, existingPosition) < obstacleSize)
{
return false;
}
}
return true;
}
private void SpawnObstacle(Vector2 position)
{
GameObject obstacle = Instantiate(obstaclePrefab, position, Quaternion.identity);
obstaclePositions.Add(position);
}
}
- 你可能需要检查一下
obstaclePrefab是否正确设置,并且在SpawnObstacle方法中是否正确添加了新障碍物的位置。
注意:这个代码只是一个简单的例子,可能需要根据你的实际需求进行调整。
评论 (0)