C# 当玩家离开对撞机门区域时,我如何触发一些动作?

C# 当玩家离开对撞机门区域时,我如何触发一些动作?,c#,unity3d,C#,Unity3d,我想对脚本做两部分: 当玩家退出门触发动作时 当动作疲劳时,使npc面向玩家缓慢旋转,并开始向玩家移动 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Playables; public class SpaceshipCutscene : MonoBehaviour { public Transform player; public

我想对脚本做两部分:

  • 当玩家退出门触发动作时

  • 当动作疲劳时,使npc面向玩家缓慢旋转,并开始向玩家移动

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.Playables;
    
    public class SpaceshipCutscene : MonoBehaviour
    {
        public Transform player;
        public Transform npc;
        public float cutsceneDistance = 5f;
        public float speed;
    
    private bool moveNpc = false;
    
    // Use this for initialization
    void Start()
    {
    
    }
    
    private void Update()
    {
        if (moveNpc)
        {
            float travel = Mathf.Abs(speed) * Time.deltaTime;
    
            Vector3 direction = (player.position - npc.position).normalized;
            Quaternion lookrotation = Quaternion.LookRotation(direction);
            npc.rotation = Quaternion.Slerp(npc.rotation, lookrotation, Time.deltaTime * 5);
            Vector3 position = npc.position;
            position = Vector3.MoveTowards(position, player.position, travel);
            npc.position = position;
        }
    }
    
    private void OnTriggerExit(Collider other)
    {
        if (other.gameObject.name == "Horizontal_Doors_Kit")
            moveNpc = true;
    }
    }
    
  • 它永远不会到达
    moveNpc=true

    这个运动员身体僵硬。 在屏幕截图中,是播放器检查员。士兵不是玩家! 玩家是第一人称

    士兵应面向玩家缓慢旋转,并在玩家出门时开始向玩家移动

    脚本已附加到太空船游戏对象:

    门上有一些孩子,这是一个与框碰撞器:

    这就是为什么在脚本中,我要检查水平门工具,因为这个门的孩子有盒子碰撞器

    但它永远不会到达终点:

    moveNpc = true;
    

    我在这一行中使用了一个断点。

    问题似乎是,至少从我的测试来看,带有OnTriggerExit的脚本必须附加到玩家,而不是某个空的游戏对象(宇宙飞船)。一旦脚本被附加到播放器上,触发器就开始工作。我原以为OnTiggereXit可以从任何对象触发,但这是我的错误。

    你能调试OnTiggereXit“if”语句并检查“name”属性的值吗?@DanielMatthews触发器完全不起作用它不会进入OnTiggereXit内部如果我没弄错的话,要检测碰撞的游戏对象必须有一个刚体。问题似乎是,至少从我的测试来看,带有OnTiggerExit的脚本必须连接到玩家,而不是某个空的游戏对象(宇宙飞船)。一旦脚本被附加到播放器上,触发器就开始工作。我认为OnTriggerExit可以从任何对象触发,但这是我的错误。请写下这条评论作为回答,因为你解决了自己的问题。