我是团结的新手。我正在通过一些链接获得帮助来创建二维游戏。我的游戏工作正常。但是,当角色被摧毁的游戏从起点开始时就像往常一样,但它会暂停。并显示一些我不知道如何解决这些错误的错误。
PlayerRespawn.js -
var Player : GameObject;
var SpawnPoint: Transform;
function OnTriggerEnter(other: Collider) {
Destroy(other.gameObject);
var P: GameObject= Instantiate(Player,SpawnPoint.position,Quaternion.identity);
var sf = Camera.main.GetComponent(SmoothFollow2);
sf.target=P.transform;
}
SmoothFollow2.js -
var target : Transform;
var distance = 3.0;
var height = 3.0;
var damping = 5.0;
var smoothRotation = true;
var rotationDamping = 10.0;
var lockRotation : boolean;
function Update () {
var wantedPosition = target.TransformPoint(0, height, -distance);
transform.position = Vector3.Lerp (transform.position, wantedPosition, Time.deltaTime * damping);
if (smoothRotation) {
var wantedRotation = Quaternion.LookRotation(target.position - transform.position, target.up);
transform.rotation = Quaternion.Slerp (transform.rotation, wantedRotation, Time.deltaTime * rotationDamping);
}
else transform.LookAt (target, target.up);
if (lockRotation){
transform.localRotation=Quaternion.EulerAngles(0,0,0);
}
}
我得到的错误是 -
NullReferenceException
PlayerRespawn.OnTriggerEnter (UnityEngine.Collider other) (at Assets/MyScripts/PlayerRespawn.js:8)
MissingReferenceException: The object of type 'Transform' has been destroyed but you are still trying to access it.
答案 0 :(得分:3)
考虑抛出错误的行是:
var sf = Camera.main.GetComponent(SmoothFollow2);
听起来好像你的相机已被毁坏了。检查此问题的一种方法是在触发器中粘贴Debug消息,以查看究竟是什么被销毁。尝试将Debug.LogWarning(other.gameObject.name);
放在OnTriggerEnter(other: Collider)
函数的开头。如果您看到相机名称显示为警告,那么您就知道情况就是这样。
您可以通过执行以下操作来阻止此操作:
if(other.gameObject.name == Camera.main.gameObject.name)
return;
更好的解决方案,如果只需要销毁的物品范围有限,则只允许那些物品继续通过OnTriggerEnter
。
答案 1 :(得分:0)
我不会摧毁玩家。我只是禁用,然后在另一个定义的位置或初始位置再次启用它。
通过执行此操作,您的相机(通过var“target”跟随您的播放器)将始终具有引用的对象,并将停止为您抛出错误。
禁用游戏对象:
gameObject.SetActive = false;
再次启用它:
gameObject.SetActive = true;
我希望有所帮助。
答案 2 :(得分:-1)
我解决了这个问题,确保在创建播放器预制件之前将主摄像头作为儿童连接到播放器,以便在重新生成时它具有主摄像头
希望这可以帮助您解决问题
"为了增加价值,我知道您正在使用的教程,并帮助理解我的帖子,您需要做的是,在您的层次结构中制作播放器(第一人称控制器)的预制件之前统一编辑器将主摄像头拖放到(第一人称控制器)上然后制作播放器的预制件。 - "