传送门制作

shader

图片说明

预制体结构

-分为传送门(Portal)和传送目标点(DesitinationPoint)两部分,每部分各有一个标签(enum类型),传送门的标签代表该传送门将人物传送到哪里,传送点的标签代表该传送门接受来自哪个标识传送门的传送.如一号传送门标志为A,B,二号传送门标志为B,A,则两个传送门可以互相传送.传送门的标签可以重复,即多个传送门的目的地相同;但传送点标签不能相同,会导致不确定的bug.
图片说明

  • 传送门

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.InputSystem;
    public class TransitionPoint : MonoBehaviour
    {
      public enum TransitionType
      {
          SameScene,
          DifferentScene
      }
    
      [Header("Transition Info")]
      public string sceneName;
      public TransitionType transitionType;
      public TransitionDestination.DestinationTag destinationTag;
    
      private bool canTrans;
    
      void OnTriggerStay(Collider other)
      {
          if (other.CompareTag("Player"))
          {
              canTrans = true;
          }
      }
      void OnTriggerExit(Collider other)
      {
          if (other.CompareTag("Player"))
          {
              canTrans = false;
          }
      }
    
      // Update is called once per frame
      void Update()
      {
          if (Keyboard.current.eKey.wasPressedThisFrame &&canTrans)
          {
              //Debug.Log("传送");
              //传送
              SceneController.Instance.TransitionToDestination(this);
          }
      }
    }
  • 传送目标点

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class TransitionDestination : MonoBehaviour
    {
      public enum DestinationTag
      {
          ENTER,A,B,C
      }
      public DestinationTag destinationTag;
    }