预制件不会在给定位置实例化



标题几乎总结了它。我的敌人预制件仅在 Y 轴上实例化,但硬币预制件正在按照我想要的方式实例化,即使它们具有相同的坐标。

import System.Collections.Generic;
var enemyPrefab : GameObject;
var coinPrefab : GameObject;
public var Coinnumber = 1;
public var Coinnumberside : float = 0.0f;
function OnTriggerEnter(other: Collider)
{
if (other.tag == "Trigger" )
{       
var StagePosition : Vector3;
StagePosition.z = 5.69 + Coinnumber;
StagePosition.x = 0.0 + Coinnumberside;
StagePosition.y = 0.4;
Instantiate(coinPrefab, StagePosition, Quaternion.identity);
Coinnumber = Coinnumber + Random.Range(5,10); 
Coinnumberside = Coinnumberside + Random.Range(0.2,-0.4);

var EnemyPosition : Vector3;
EnemyPosition.z = 5.69 + Coinnumber;
EnemyPosition.x = 0.0 + Coinnumberside;
EnemyPosition.y = 0.4;
Instantiate(enemyPrefab, EnemyPosition, Quaternion.identity);
Coinnumber = Coinnumber + Random.Range(5,10); 
Coinnumberside = Coinnumberside + Random.Range(0.2,-0.4);   


}
}

除非我误解了你,否则你试图在实例化硬币的相同位置创建一个敌人。正如我所看到的,问题是这些行:

Coinnumber = Coinnumber + Random.Range(5,10); 
Coinnumberside = Coinnumberside + Random.Range(0.2,-0.4);
...
EnemyPosition.z = 5.69 + Coinnumber;
EnemyPosition.x = 0.0 + Coinnumberside;

你在设置敌人位置之前重新计算币数变量。唯一不变的值是 Y 坐标,因为您重新计算 Z 和 X。因此,例如,当您第一次运行此脚本时,您的硬币将在位置(5.69f,0.4f,0f)生成,然后 enemyPosition 将获得随机值添加到其中,因此它可能(例如)(10.69f,0.4f,0.2f)

考虑尝试一下:

var StagePosition : Vector3;
StagePosition.z = 5.69 + Coinnumber;
StagePosition.x = 0.0 + Coinnumberside;
StagePosition.y = 0.4;
Instantiate(coinPrefab, StagePosition, Quaternion.identity);
Instantiate(enemyPrefab, StagePosition, Quaternion.identity);
Coinnumber = Coinnumber + Random.Range(5,10); 
Coinnumberside = Coinnumberside + Random.Range(0.2,-0.4);

这将在与你的硬币相同的位置生成敌人,然后计算下一个硬币和敌人的新位置。但是,如果这不是您要做的,请告诉我,我会更改答案。

import System.Collections.Generic;
var enemyPrefab : GameObject;
var coinPrefab : GameObject;
public var Coinnumber = 1;
public var Coinnumberside : float = 0.0f;
public var Enemynumber = 1;
public var Enemynumberside : float = 0.0f;
function OnTriggerEnter(other: Collider)
{
if (other.tag == "Trigger" )
{       
var StagePosition : Vector3;
StagePosition.z = 5.69 + Coinnumber;
StagePosition.x = 0.0 + Coinnumberside;
StagePosition.y = 0.4;
Instantiate(coinPrefab, StagePosition, Quaternion.identity);
Coinnumber = Coinnumber + Random.Range(5,10); 
Coinnumberside = Coinnumberside + Random.Range(0.2,-0.4);
}
if(other.tag == "Trigger" )
{
var EnemyPosition : Vector3;
EnemyPosition.z = 5.69 + Enemynumber;
EnemyPosition.x = 0.0 + Enemynumberside;
EnemyPosition.y = 0.4;
Instantiate(enemyPrefab, EnemyPosition, Quaternion.identity);
Enemynumber = Enemynumber + Random.Range(5,10); 
Enemynumberside = Enemynumberside + Random.Range(0.2,-0.4);
}
}

我仍然不太确定为什么在我将它们分开后会起作用,但它确实如此,所以我把它作为一个答案。感谢所有回答并试图解决我问题的人,我真的很感激。

最新更新