代码(GameObject参考)没有显示,所以我需要一种不同的方式来引用玩家。我还没有尝试太多。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CamaraBehaviour : MonoBehaviour {
public Object Player;
public float yOffset = 3.0f;
public float zOffset = 10.0f;
Vector3 newPos = Player.transform.position;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
newPos.y = newPos.y + yOffset;
newPos.z = newPos.z + zOffset;
transform.position = newPos;
transform.LookAt(player.transform);
}
}
这是我的相机固定码。这就是为什么我首先需要参考的原因。 我感谢您的帮助(请不要写任何其他字眼,请学校阻止该单词,这样如果您回答这个单词,我将无法访问该网站。)
答案 0 :(得分:1)
Player
不会出现在检查器中,因为它的类型为Object
,不可序列化。您想对Unity对象使用GameObject
。
public GameObject Player;
此代码中还有其他一些错误。
您不能使用对方法外部的另一个对象的引用来设置newPos
。而是在Update()
中执行此操作。
Vector3 newPos;
// Update is called once per frame
void Update () {
newPos = Player.transform.position;
// your other code
}
更新的最后一行有一个错字,Player中的P必须为大写(这就是您命名的变量)。
transform.LookAt(Player.transform);
编辑:但是,由于无论如何您似乎都只使用Player.transform,因此不妨继续引用该转换组件。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CamaraBehaviour : MonoBehaviour {
public Transform Player;
public float yOffset = 3.0f;
public float zOffset = 10.0f;
Vector3 newPos;
// Update is called once per frame
void Update () {
newPos = Player.position;
newPos.y = newPos.y + yOffset;
newPos.z = newPos.z + zOffset;
transform.position = newPos;
transform.LookAt(Player.position);
}
}
答案 1 :(得分:0)
如果脚本已附加到播放器,则可以执行以下操作:
private GameObject player;
void Start()
{
player = GetComponent<GameObject>();
}
但是,您可以设置一个公共变量,如Marcus的另一个答案所示。
但是...如果您想在运行时找到游戏对象,也可以这样做:
private GameObject player;
void Start()
{
player = GameObject.FindWithTag("Player");
}
您只需要确定相应地标记播放器即可。