Unity C#-同时具有OnTriggerExit和OnTriggerEnter时,仅调用OnTriggerExit

问题描述 投票:2回答:2

好,所以我看不出我的问题在哪里。我在移动平台上使用了OnTriggerEnter。它具有刚体部件,并且在平台和播放器上均将box collider设置为isTrigger,但是由于某些原因,当播放器触发我的平台时,只会调用OnTriggerExit。我的播放器被标记为统一播放器...我不知道该怎么办。

代码:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;



public class Moving_Platform : MonoBehaviour
{
    [SerializeField]
    private float _speed = 1.0f;

    [SerializeField]
    private Transform _A, _B;

    private bool _direction = false;

    void FixedUpdate()
    {
        if(transform.position==_A.position)
        {
            _direction = false;
        }
        else if(transform.position== _B.position)
        {
            _direction = true;
        }

        if (_direction == false)
        {
            transform.position = Vector3.MoveTowards(transform.position, _B.position, _speed * Time.deltaTime);
        }

        if(_direction==true)
        {
            transform.position = Vector3.MoveTowards(transform.position, _A.position, _speed * Time.deltaTime);
        }
    }

    private void OnTriggerEnter(Collider other)
    {

        if (other.tag == "Player")
        {
           other.transform.parent = this.transform;
        }
    }

    private void OnTriggerExit(Collider other)
    {
        Debug.Log("OMFG");
        if (other.tag == "Player")
        {
            Debug.Log("But why!");
            other.transform.parent = null;
        }
    }


}

所有检查员

c# unity3d game-development
2个回答
1
投票

似乎更新到新版本(2020.x)达到了目的。感谢您的尝试。


0
投票

BoxCollider在Moving_Platform GameObject中被添加了两次,其中一个具有“启用触发器”的值,另一个不具有。为什么会这样呢?为了进行更好的测试,您可以在if语句之外添加Debug.Log(other.name),以查看发生了什么。

© www.soinside.com 2019 - 2024. All rights reserved.