有没有办法让相机跟随游戏中不同的GameObject? c#2d

时间:2017-09-05 17:49:24

标签: c# camera unity2d

我已经拥有了播放器后面的统一默认摄像头。但我想让它在一个角色和另一个角色之间切换,具体取决于我激活的那个角色。到目前为止,我所拥有的只是......

using UnityEngine;
using System.Collections;

public class cameraFollow : MonoBehaviour {

public Transform player;
public Transform player2;

void Update () 
{
    transform.position = new Vector3 (player.position.x + .5f, player.position.y + .55f, -7.2f);
    }
    if(Input.GetKeyDown(KeyCode.Space)){
    //switch to player2
    }
}

有没有办法做到这一点或我应该专注于学习做那件事的事情?感谢。

2 个答案:

答案 0 :(得分:2)

首先,您的代码似乎无法编译,因为if语句位于可以执行的任何块之外。仔细检查您的括号并相应缩进您的代码。

要实现您的目标,请执行以下操作。添加else块,将当前的关注代码移到那里,然后在现有的if块中添加其他对象的关注代码:

if (Input.GetKeyDown(KeyCode.Space)) {
    transform.position = new Vector3(player2.position.x + .5f, player2.position.y + .55f, -7.2f);
}
else {
    transform.position = new Vector3(player.position.x + .5f, player.position.y + .55f, -7.2f);
}

确保使用Update方法获取上述所有代码。

您可能还需要考虑删除.5f.55f-7.2f等幻数,并将其替换为命名良好的变量。例如,var offset = new Vector3(.5f, .55f, -7.2f)可能没问题。

作为一般性建议,首先要提高您的编程技能。我怀疑在创建游戏时学习是一种保持动力的好方法,但与此同时,你会遇到这样的问题,如果你对一般的编程更熟悉的话,很容易避免。虽然没有错误的学习方法,所以如果这对你来说是个好方法,那就去吧!

答案 1 :(得分:0)

NVM我明白了。感谢Xying让我开始使用代码,这一点至关重要。这是现在的代码。

using UnityEngine;
using System.Collections;

public class cameraFollow : MonoBehaviour {

public Transform player;
public Transform player2;
private bool idleFollow = true;
private bool mountFollow = false;

void Update ()
{
    if (!mountFollow && idleFollow && Input.GetKeyDown (KeyCode.Space)) 
    {
        mountFollow = true;
        idleFollow = false;
        return;
    }

    if (mountFollow && !idleFollow && Input.GetKeyDown(KeyCode.Space))
    {
        idleFollow = true;
        mountFollow = false;
        return;
    }

    if (idleFollow && !mountFollow) 
    {
        transform.position = new Vector3 (player.position.x + .5f, player.position.y + .55f, -7.2f);
    }

    if (mountFollow && !idleFollow)
    {
        transform.position = new Vector3 (player2.position.x + .5f, player2.position.y + .55f, -7.2f);
    }
}

}