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
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可以从任何对象触发,但这是我的错误。请写下这条评论作为回答,因为你解决了自己的问题。