当这个脚本处于活动状态时,我实例化的一个预置(我的游戏的老板)跟随我的相机,这并不是我告诉它要做的。更准确地说,当摄像机向右移动时,克隆的预制件就会向左移动,反之亦然。如果我的老板已经在场景中并开始游戏,它会按我说的做,而不是跟随摄像机。预制件只做了一半的事情,是的,我确实对预制件应用了几次更改。我知道它没有自动连接到相机上,因为我在场景视图中移动了相机,关闭了这个脚本,并且它在游戏中没有跟随相机。
在这个脚本中甚至没有引用老板。我绝对肯定这个问题甚至不是脚本的问题。但是,当这个与老板无关的脚本处于活动状态时,就会发生这种情况。所以我的问题是,我可以以某种方式告诉boss脚本,让它自己看不见这个脚本吗?或者更好的是,Unity中有没有什么东西可以导致这种情况,在那一端我可以修复它?这个脚本所做的唯一一件事就是在玩家的角色之间切换的时候跟随他们。不管你当时有什么活跃的角色,老板都会跟着镜头走,所以这也与此无关。最后,boss脚本或附加到实例化boss的另一个2D触发器碰撞器的脚本中根本没有引用摄影机。
using UnityEngine;
using System.Collections;
public class cameraFollow : MonoBehaviour {
public Transform player;
public Transform player2;
private bool idleFollow = true;
private bool mountFollow = false;
public theWatcher wMana;
public tulMove tulia;
private bool alphaGirl;
[HideInInspector]
public bool blinking = false;
[HideInInspector]
public bool vTul = true;
void Update ()
{
CameraSwitching ();
}
void CameraSwitching()
{
if (!wMana.alphaGirl && !wMana.switched && vTul && wMana.cur_mana > 0f && Input.GetKeyDown (KeyCode.Space)) {
vTul = false;
return;
}
if (!vTul && wMana.cur_mana > 0f && Input.GetKeyDown (KeyCode.Space)) {
vTul = true;
return;
}
if (!vTul && wMana.cur_mana <= 0) {
vTul = true;
}
if (vTul && wMana.cur_mana <= 0 && Input.GetKeyDown (KeyCode.Space)) {
vTul = true;
}
if (!wMana.paused && vTul){
transform.position = new Vector3 (player.position.x + .5f, player.position.y + .55f, -7.75f);
}
if (!wMana.paused && !vTul) {
transform.position = new Vector3 (player2.position.x + .5f, player2.position.y + .55f, -7.75f);
}
if (wMana.switched) {
transform.position = new Vector3 (player2.position.x + .5f, player2.position.y + .55f, -7.75f);
}
if (!wMana.switched) {
transform.position = new Vector3 (player.position.x + .5f, player.position.y + .55f, -7.75f);
}
}
}这是生成我老板的代码。我知道这不是因为我使用了除了我老板之外的其他预制件,这些预制件工作得很好。

发布于 2017-11-30 01:09:11
因此,由于没有已知的解决方案来解决一个随机的,无关的原因,我只是决定解决这个问题。我所做的是让老板已经在场景中,并使触发器对撞机激活现有的GameObject。如果玩家死了,我会把老板移回他原来的位置并停用他。无论出于什么原因,我都不能预制这个角色,但至少它是一个你只需要击败一次的角色,这很糟糕。
https://stackoverflow.com/questions/47515770
复制相似问题