我试图解冻我的球员轮换,然后再次冻结它。它解冻,但由于某些原因,我不能再次冻结轮换。
游戏管理器脚本-
public void enableRotation()
{
if (CompareTag("Player"))
{
rb.freezeRotation = true;
}
}
传单_脚本外-
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class flyer_Off : MonoBehaviour
{
void OnTriggerEnter(Collider other)
{
FindObjectOfType<GameManager>().enableRotation();
}
}
我能够以相同的方式解冻旋转,但由于某种原因,当我尝试再次冻结它时,它不起作用。
我试着将GameManager脚本添加到Player和flyer_Off中,并在触发器和Player上添加Box Collider。
如果需要更多信息,我可以添加。
谢谢你
2条答案
按热度按时间sy5wg1nm1#
既然你想冻结旋转,它应该可以工作。唯一的例外是根本没有到达那一行。请检查你的对象是否有标签“球员”,并确实有一个“游戏经理”组件在它上面。
将freeze值设置为true
rb.freezeRotation = true;
只会冻结它。我会将该函数重命名为“toggleRotation”,并执行以下操作:rb.freezeRotation = !rb.freezeRotation;
ffscu2ro2#
您应该使用
Collider other
访问播放器。正如derHugo所说。你的GameManager可能不应该有你的玩家的
RigidBody
。玩家要对自己的RigidBody
负责。请考虑:
有一个名为
EnableRotation
的成员函数,然后在该函数中冻结旋转,并不能使代码更容易维护。