我现在所拥有的是两个由同一script
移动的盒子,如果脚本中的boolean
canMove
是true
,就会发生这种情况。
我的问题是我只想将canMove
中的一个GameObjects
设置为false。但是很明显,当我这样做时,GameObjects
都会改变。
如何控制每个GameObject
上的此变量?
答案 0 :(得分:1)
如果我理解您的问题是您有一个脚本,可以说
public class CollisionHandler : MonoBehaviour
{
public bool CanMove;
void OnTriggerEnter(Collider other)
{
CanMove = false;
}
void OnTriggerExit(Collider other)
{
CanMove = true;
}
}
,您只想将其中一个对象设置为false
,对吗?
也许有点hacky,但是你可以做
public static List<GameObject> lastReset;
void OnTriggerEnter(Collider other)
{
//get your own index in list
var myIndex = lastReset.IndexOf(gameObject);
//get others index
var otherIndex = lastReset.IndexOf(other.gameObject);
// Only go on if other is exactly the object in front of you
if(otherIndex != myIndex - 1) return;
// You way to define if can move
CanMove = ...;
}
无论您在何处进行重置,
CollisionHandler.lastReset.Remove(objectYouReset);
CollisionHandler.lastReset.Add(objectYouReset);
要删除它并将其设置在列表的末尾。
答案 1 :(得分:0)
您可以将bool变量设为公开,以便可以在检查器中看到它们。 现在,在Inspector中将一个更改为 true ,将另一个更改为 false 。