C# 当角色碰撞长方体时,如何以逻辑方式使用布尔变量?
当角色第一次碰撞墙时(使用框碰撞器的空游戏对象),它会将输入的值更改为true并旋转角色 但在旋转并到达另一面墙后与另一面墙发生碰撞时,我使用了一个断点,它到达了零件:C# 当角色碰撞长方体时,如何以逻辑方式使用布尔变量?,c#,unity3d,unity5,C#,Unity3d,Unity5,当角色第一次碰撞墙时(使用框碰撞器的空游戏对象),它会将输入的值更改为true并旋转角色 但在旋转并到达另一面墙后与另一面墙发生碰撞时,我使用了一个断点,它到达了零件: using System.Collections; using System.Collections.Generic; using UnityEngine; public class BoxCollider : MonoBehaviour { private float degrees = 180f; pub
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BoxCollider : MonoBehaviour {
private float degrees = 180f;
public float rotateSpeed = 10f;
private GameObject character;
private bool entered = false;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
if (entered == true)
{
character.transform.rotation = Quaternion.Slerp(character.transform.rotation, Quaternion.Euler(degrees, 0, degrees), rotateSpeed * Time.deltaTime);
}
}
void OnTriggerEnter(Collider c)
{
character = c.gameObject;
entered = true;
}
}
但当它进入更新功能时:
void OnTriggerEnter(Collider c)
{
character = c.gameObject;
entered = true;
}
我在这一行使用了断点,输入的是false。
不知道为什么
第一次与墙碰撞为真,但第二次与墙碰撞为假
我使用此布尔的原因是仅当碰撞墙(长方体)时才旋转角色
我在地形周围有4个空的游戏对象,其中每一个都有一个盒子碰撞器istrigger被设置为on,并且这个脚本被附加到每个游戏对象上
我不明白为什么第一次输入是真的,第二次输入是假的。要么OnTriggerEnter不工作(如果你碰到墙,你不想吗?),要么你有其他脚本将
输入设置为假。因为根据您输入的代码,设置为isTriggerentered
的碰撞器将始终为真。确保没有将脚本附加到许多对象。这也可能给您带来误导性的调试值,因为它在另一个对象上可能为false
同样值得注意的是
注意:仅当其中一个碰撞器还附加了非运动学刚体时,才会发送碰撞事件
或者如果您使用的是CharacterController。如果您有任何代码将“输入的<代码>设置为false”,您应该并且必须包含该代码以获得进一步帮助。确定您看到/调试的实体正确吗?(在多次使用的对象中,断点如果没有误导性的话,通常会造成混淆。)仍然不起作用。脚本被附加到4个空游戏对象中的每一个,每个游戏对象都添加了框碰撞器组件。因此,脚本在每个游戏对象上有4个位置。第三个personcontroller(1)我有两个第三个personcontroller。我在上面有这样的组件:动画师,刚体,胶囊碰撞器,第三人称用户控制(脚本),第三人称角色(脚本)等等。在刚体中,选中“使用重力”(Use Gravity)(设置为“开”)。每面墙与玩家碰撞后都会使玩家旋转。。。是否确定没有将输入设置为false的代码?尚未工作。但是我做了一些测试。我看到,当它与检查器中的第一面墙发生碰撞后进入更新函数时,墙上的字符与该字符重合,我看到了“已输入已选中”复选框,因此这是真的。然后旋转后,它移动到第二面墙,我看到这面墙,旁边的复选框是未选中的false,但在第一面墙中仍然选中了true。然后它接触到第二面墙,它的复选框也被选中。所以现在两堵墙都被检查了,这是真的。但是它在第二面墙上没有旋转。为什么它会旋转回来?它应该在第二次碰撞时旋转回来不?为什么不呢?它碰撞的第一面墙旋转180度,然后在下一面墙与第二面墙碰撞时,它应再次旋转180度。回到另一边。我认为这是逻辑。即使它不是这样,为什么它要继续离开地形呢?它至少应该保持在原地行走,因为墙壁应该阻止它继续在地形上移动。
if (entered == true)