【发布时间】:2019-03-18 15:54:12
【问题描述】:
我有一个总是在同一个地方的对象,我想在另一个可移动角色旁边生成它。或者更具体地说,我有两个,因为是基于回合的 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;
问题是我不想使用实例化方法,只是每转都移动同一个对象,这就是为什么我试图从 Player 角色中更改“InitPosition”,但它不起作用。我怎样才能做到这一点?
【问题讨论】:
-
定义“不起作用”。因为目前有两件事:1)该值不在任何地方使用,2)当
whosTurn == -1时,您永远不会分配给它 -
我尝试使用“initPosition = positionPlayer1.transform.position”,但它不起作用,对象不符合我的要求。我不知道应该使用什么属性来传递角色在我想要移动的对象上的位置值,并且我不想被强制实例化它。
-
initPosition是什么?这是您在某处定义的变量或字段,在您显示的代码中,除了一行之外没有使用它。 -
啊,好吧,“initPosition”是我要移动的对象的起始位置。我在 Start() 函数中有这段代码:“transform.position = initPosition”,因为脚本在我要移动的游戏对象内。我只是放了我用来改变转弯的协同程序的代码,因为我想改变对象位置的代码行必须在那里。
-
Start()只运行一次。如果您希望在那之后发生某些事情,您需要将执行此操作的代码放在其他地方。