繁体   English   中英

我如何修复我的 Unity 2D c# OnTriggerEnter2D 延迟?

[英]How do i fix my Unity 2D c# OnTriggerEnter2D delay?

你好,我的 Unity 2d 游戏的 Teleport 代码有一些问题

我也需要

other.transform.position = teleportTo.position;

而不是这个,这是玩家没有传送的部分吗?

transform.position = teleportTo.position;

完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEditor.Experimental.GraphView;
using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(Collider2D))]
public class TeleportTrigger : MonoBehaviour
{
    public enum TriggerType { Enter, Exit };

    //The Transform to teleport to
    [SerializeField] Transform teleportTo;

    //The filter Tag
    [SerializeField] string tag = "Player";

    //Trigger Event to Teleport
    [SerializeField] TriggerType type;


    void OnTriggerEnter2D(Collider2D other)
    {

        Time.timeScale = 0f;

        if (type != TriggerType.Enter)
        {
            return;
        }

        if (tag == string.Empty || other.CompareTag(tag))
        {
            //TP
            StartCoroutine(Wait());

            //all this \/ is not working there is no delay


            /*other.transform.position = teleportTo.position;
            Time.timeScale = 1f;
            */
        }

    }
     private IEnumerator Wait()
    {

        yield return new WaitForSeconds(5);

        transform.position = teleportTo.position;


        Time.timeScale = 1f;
    }
}```

设置后

Time.timeScale = 0;

yield return new WaitForSeconds (5);

永远不会完成,因为WaitForSeconds取决于Time.timeScale

你宁愿使用WaitForSecondsRealtime

yield return new WaitForSecondsRealtime(5);

它忽略了时间尺度。


对于您的其他问题,您可以将所有必需的参数传递给协程

IEnumerator Wait(Transform targetTransform)
{
    yield return new WaitForSecondsRealtime (5);

    targetTransform.position = teleportTo.position;

    Time.timeScale = 1f;
}

StartCorouine (Wait(other.transform));

你也确定

Time.timeScale = 0f;

即使您返回并且不触发传送,也应该始终发生吗?

我宁愿将其移动到协程中,因此只有在您知道之后您肯定会再次重置它时才应用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM