在没有实例化的情况下在另一个对象旁边生成一个对象
Spawn an object next to another object with no instantiate
我有一个总是在同一个地方的对象,我想在另一个可移动的角色旁边生成它。或者更具体地说,我有两个,因为是一个回合制 3D 游戏,我想在一个角色旁边生成这个对象,当回合结束时,在另一个不同的角色旁边生成相同的对象。在他的回合开始时,该对象将始终出现在移动对象旁边。现在我在对象中有这个脚本:
Vector3 initPosition //the position of the object that I want to move;
private int whosTurn = 1;
private IEnumerator WhoTurn()
{
if (whosTurn == 1)
{
GameController.MovePlayer(1);
CameraController.isTurnPlayer1 = true;
CameraController.isTurnPlayer2 = false;
initPosition = positionPlayer1.transform.position;
}
else if (whosTurn == -1)
{
GameController.MovePlayer(2);
CameraController.isTurnPlayer2 = true;
CameraController.isTurnPlayer1 = false;
}
whosTurn = whosTurn * -1;
yield return 0;
问题是我不想使用实例化方法,只是每次移动相同的对象,这就是为什么我试图从玩家角色更改 'InitPosition',但它没有工作。我怎样才能做到这一点?
public Transform pObject;//(player object)
public Transform eObject;//(enemy object)
void Awake(){
在这里你需要为两个对象分配初始位置,这两个对象我的意思是你接下来想要生成它们的两个项目。我不确定你是如何分配这个的,但是因为
我正在使用 public 变量,你可以将这两个对象拖到检查器中的这个脚本中,但如果你使用标签,你将在 :
中获取它们
void Awake(){
}
那么你可以这样做:
private IEnumerator WhoTurn()
{
if (whosTurn == 1)
{
GameController.MovePlayer(1);
CameraController.isTurnPlayer1 = true;
CameraController.isTurnPlayer2 = false;
transform.position=pObject.position;
}
else if (whosTurn == -1)
{
GameController.MovePlayer(2);
CameraController.isTurnPlayer2 = true;
CameraController.isTurnPlayer1 = false;
transform.position=eObject.position;
}
whosTurn = whosTurn * -1;
yield return 0;
所以你需要为两个位置设置一个变量,然后你就可以来回切换了。此脚本将对您要移动的对象起作用。
或者,我知道您不想使用实例化,但您可以在玩家回合开始时实例化一个项目,然后 Destroy(gameObject)
在回合结束时实例化。
我有一个总是在同一个地方的对象,我想在另一个可移动的角色旁边生成它。或者更具体地说,我有两个,因为是一个回合制 3D 游戏,我想在一个角色旁边生成这个对象,当回合结束时,在另一个不同的角色旁边生成相同的对象。在他的回合开始时,该对象将始终出现在移动对象旁边。现在我在对象中有这个脚本:
Vector3 initPosition //the position of the object that I want to move;
private int whosTurn = 1;
private IEnumerator WhoTurn()
{
if (whosTurn == 1)
{
GameController.MovePlayer(1);
CameraController.isTurnPlayer1 = true;
CameraController.isTurnPlayer2 = false;
initPosition = positionPlayer1.transform.position;
}
else if (whosTurn == -1)
{
GameController.MovePlayer(2);
CameraController.isTurnPlayer2 = true;
CameraController.isTurnPlayer1 = false;
}
whosTurn = whosTurn * -1;
yield return 0;
问题是我不想使用实例化方法,只是每次移动相同的对象,这就是为什么我试图从玩家角色更改 'InitPosition',但它没有工作。我怎样才能做到这一点?
public Transform pObject;//(player object)
public Transform eObject;//(enemy object)
void Awake(){ 在这里你需要为两个对象分配初始位置,这两个对象我的意思是你接下来想要生成它们的两个项目。我不确定你是如何分配这个的,但是因为 我正在使用 public 变量,你可以将这两个对象拖到检查器中的这个脚本中,但如果你使用标签,你将在 :
中获取它们void Awake(){
}
那么你可以这样做:
private IEnumerator WhoTurn()
{
if (whosTurn == 1)
{
GameController.MovePlayer(1);
CameraController.isTurnPlayer1 = true;
CameraController.isTurnPlayer2 = false;
transform.position=pObject.position;
}
else if (whosTurn == -1)
{
GameController.MovePlayer(2);
CameraController.isTurnPlayer2 = true;
CameraController.isTurnPlayer1 = false;
transform.position=eObject.position;
}
whosTurn = whosTurn * -1;
yield return 0;
所以你需要为两个位置设置一个变量,然后你就可以来回切换了。此脚本将对您要移动的对象起作用。
或者,我知道您不想使用实例化,但您可以在玩家回合开始时实例化一个项目,然后 Destroy(gameObject)
在回合结束时实例化。