在游戏中更改角色相机

时间:2016-10-01 19:38:57

标签: c# unity3d

///问题:如何在没有错误的情况下将相机更改为其他播放器

所以我有一段代码,它将变量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方法在游戏开始时只使用了一次但是如果我将代码从ChangeCharacter()移动到lateUpdate()它可以工作,但是在它停止之前多次更改相机并且如果它在ChangeCharacter()方法中并且我从LateUpdate()调用它,它仅适用于第一个播放器。

1 个答案:

答案 0 :(得分:0)

将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:明天会检查它。