传送门制作
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; }