【发布时间】:2016-10-02 21:35:40
【问题描述】:
///问题:如何在不出错的情况下将相机更改为其他玩家
所以我有一段代码将变量 selecterChar 从 0 更改为 1 或在每次用户按下“E”时反转,并且效果很好。这是在另一个脚本中,我使用此代码访问该脚本
private void ChangeCharacter()
{
GameObject thePlayer = GameObject.Find("Walk (1)");
PlayerMovement playerMovemnt = thePlayer.GetComponent<PlayerMovement>();
int selectedCharacter = playerMovemnt.selectedChar;
selCharacter = selectedCharacter;
}
现在该脚本的另一部分用于相机。我想用这个换相机
private void Start()
{
offset = transform.position - player.transform.position;
offset = transform.position - player2.transform.position;
}
private void LateUpdate()
{
if (selCharacter == 0)
{
transform.position = player.transform.position + offset;
}
else
{
transform.position = player2.transform.position + offset;
}
}
因此,如果 selCharacter(在此脚本的开头声明)为 0,则相机将移动到播放器,但如果为 1,则将移动到播放器 2。所以 ChangeCharacter 方法在游戏开始时只使用了 1 次,但是如果我将代码从 ChangeCharacter() 移动到 lateUpdate() 它可以工作,但是在它停止之前多次更改相机并且如果它在 ChangeCharacter() 方法中并且我从 LateUpdate() 中调用它,它仅适用于第一个玩家。
【问题讨论】:
-
在这行
offset = transform.position - player.transform.position; offset = transform.position - player2.transform.position;你正在覆盖偏移量,你想要吗? -
我只是通过在另一个脚本中将 Down 添加到 GetKey 并在 lateUpdate 脚本中添加 ChangeCharacter() 代码来修复它。现在它正在工作,并且对于一些测试留下的偏移量。我只是忘了删除它。