【发布时间】:2016-12-26 12:28:38
【问题描述】:
我是 Unity 的初学者,我开始了一个小项目,我正在使用一个库存框架。
我正在尝试在我的游戏中创建一个安全区。我的安全区有一个触发器“开启”的对撞机。
如果我的玩家进入安全区,我只想发送一条消息。 我的问题是当玩家进入时,我无法获得玩家的名字,它给了我“_TriggerHandler”作为值而不是我的玩家。
代码从不输入“if”,我在控制台中获得了第一个调试日志,但没有别的。 (p 为空)(其他 = _TriggerHandler)
无法理解为什么 other = _TriggerHandler。
using Devdog.General;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SafeZone : MonoBehaviour {
protected vp_FPPlayerEventHandler m_Player = null;
protected bool safe;
// Use this for initialization
void Start()
{
m_Player = GameObject.Find("Gringan").GetComponent<vp_FPPlayerEventHandler>();
}
// Update is called once per frame
void Update()
{
}
/// <summary>
/// registers this component with the event handler (if any)
/// </summary>
protected virtual void OnEnable()
{
if (m_Player != null)
m_Player.Register(this);
}
/// <summary>
/// unregisters this component from the event handler (if any)
/// </summary>
protected virtual void OnDisable()
{
if (m_Player != null)
m_Player.Unregister(this);
}
void OnTriggerEnter(Collider other)
{
var p = other.GetComponent<Player>(); // Player is in Devdog.General;
print("Collision detected with trigger object " + other.name + " p= " + p);
if (p != null)
{
print("Collision detected with trigger object PLAYER " + other.name);
safe = true;
m_Player.PlayerIsSafe.Send(safe);
}
}
void OnTriggerStay(Collider other)
{
var p = other.GetComponent<Player>(); // Player is in Devdog.General;
if (p != null)
{
print("Still colliding with trigger object PLAYER " + other.name);
safe = true;
m_Player.PlayerIsSafe.Send(safe);
}
}
void OnTriggerExit(Collider other)
{
var p = other.GetComponent<Player>(); // Player is in Devdog.General;
if (p != null)
{
print(gameObject.name + " and trigger object PLAYER " + other.name + " are no longer colliding");
safe = false;
m_Player.PlayerIsSafe.Send(safe);
}
}
}
控制台消息:
-->
检测到与触发对象_TriggerHandler p=的冲突 UnityEngine.MonoBehaviour:打印(对象) SafeZone:OnTriggerEnter(Collider)(在 Assets/My Assets/Scripts/SafeZone.cs:44)
我想知道是否有人知道是什么导致这种情况发生?
感谢您的帮助。
【问题讨论】: