我已经拥有了播放器后面的统一默认摄像头。但我想让它在一个角色和另一个角色之间切换,具体取决于我激活的那个角色。到目前为止,我所拥有的只是......
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
}
}
有没有办法做到这一点或我应该专注于学习做那件事的事情?感谢。
答案 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);
}
}
}