【问题标题】:Change Character camera while in-game在游戏中更改角色相机
【发布时间】: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() 代码来修复它。现在它正在工作,并且对于一些测试留下的偏移量。我只是忘了删除它。

标签: c# unity3d


【解决方案1】:

把 Input.GetKey(KeyCode.E) 改成 Input.GetKeyDown(KeyCode.E) 然后加上这个

    GameObject thePlayer = GameObject.Find("Walk (1)");
    PlayerMovement playerMovemnt = thePlayer.GetComponent<PlayerMovement>();
    int selectedCharacter = playerMovemnt.selectedChar;
    selCharacter = selectedCharacter;

到 Update 方法,因为我不需要另一个并且它有效。

PS:明天会检查它的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2022-07-26
    • 2014-12-16
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多