我是Unity2D的新手(Unity 5.0.2f1)并且一直在寻找一种解决方案,我肯定会盯着我!
我有一个游戏对象(基本上是道路),如下所示(DirtTrack1):
我有一个产生GameObjects(车辆)的产卵者。我想在这条路上产生这些车辆。
我已经尝试过以下代码来实现这一点,主要是通过获得道路的Y坐标和Y坐标的Y坐标,在道路的Y轴区域内生成车辆,所以我得到了我可以放置车辆的最小和最大垂直位置:
void FixedUpdate() {
// Repeat spawning after the period spawn
// route has finished.
if (!_inSpawningIteration)
StartCoroutine (SpawnVehiclePeriodically());
}
IEnumerator SpawnVehiclePeriodically()
{
// First, get the height of the vehicle and road.
float vehicleHeightHalf = vehiclePreFab.GetComponent<SpriteRenderer>().bounds.size.y / 2f;
float roadHeightHalf = roadObject.GetComponent<SpriteRenderer>().bounds.size.y / 2f;
float roadTopY = roadObject.transform.position.y + roadHeightHalf;
float roadBottomY = roadObject.transform.position.y - roadHeightHalf;
// Next, ensure that maxY is within bounds of this farm vehicle.
roadMaxY = roadTopY - vehicleHeightHalf;
roadMinY = roadBottomY + vehicleHeightHalf;
// Set the position and spawn.
Vector3 newPosition = new Vector3 (Const_RoadItemsPositionX, randomY, 0f);
GameObject vehicle = (GameObject)GameObject.Instantiate (vehiclePreFab, newPosition, Quaternion.identity);
}
这确实是随机产生的,但大多数时候它总是不在道路内。它既可以是道路的一部分,也可以是它的外边缘。
我无法弄清楚我在这里做错了什么,但我确信这很简单!
答案 0 :(得分:1)
您正在使用localPosition
。来自documentation:
变换相对于父变换的位置。
如果转换没有父项,则它与
Transform.position
相同。
观察你的场景,你的道路有一个父对象,你所获得的相对位置可能会弄乱汽车的产生位置。
答案 1 :(得分:1)
勾选您的车辆的运动检查,如果您不这样做,物理可能会将其移出路面。