Unity场景转换之传送门点对点传送

在场景中的传送门位置创建一个空物体Teleport,并给予BoxCollider2D组件。

Note: 不要忘记把is Trigger给勾上!!!

接下来创建一个C#脚本,并将其挂载到TelePort空物体上。打开该脚本进行代码的编写:

public class Teleport : MonoBehaviour
{
    public string toScene;//前往的场景
    public string fromPassword;//场景跳转时,赋给玩家的关于下个场景与该场景相对应的跳转点的密码,以便确定角色在下个场景的开始位置
    public string toPassword;//角色跳转到该场景时,用于确定角色跳转所在位置是否在该传送点
    public bool canTeleport;//判断角色能否跳转。

    private PlayerController player;//角色脚本

    private void Start()
    {
        //获取角色脚本
        player = GameObject.FindWithTag("Player").GetComponent<PlayerController>();
        //判断角色携带的密码是否和该传送点师傅一致,如果一致角色就跳转到该点。
        if (player.scenePassword == toPassword)
        {
            player.transform.position = transform.position;
            //将canTeleport设置为false,防止刚跳转过来,又跳转回之前的传送点
            canTeleport = false;
        }
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "Player" && canTeleport)
        {
            //将本传送点的密码赋给角色,以便能够确定角色在下一个场景的位置是在对应的传送点的位置
            player.scenePassword = fromPassword;
            SceneManager.LoadScene(toScene);
        }
    }

    private void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.tag == "Player")
        {
            //角色离开传送点后,确保返回时能再次传送
            canTeleport = true;
        }
    }
}

 传送点相关的代码就是这些了,还要在PlayerController中添加一个名为scenePassword的string参数,该参数的作用是:切换场景时,保存传送点赋给密码,以便传送到与该传送点对应的传送点。

NOTE:在PlayerController中一定要有设置跳转场景时,玩家角色不被销毁的API方法。

 这时就可以在Unity中设置传送点之间的传送密码了。

场景1的传送点:

场景2的传送点:

 

 Note:在场景1中,传送点的CanTeleport参数初始要设为true,因为角色在scene1中生成,而

 CanTeleport初始值为false,这样的话,角色就无法满足传送条件;而在跳转到其他场景,离开传送点后CanTeleport会根据脚本被设置为true,就很容易满足传送条件。

当然,如果你的传送门传送条件是需要按下某个键,比如F键,那么CanTeleport参数就不是必须的了,此时删除该参数也无妨。

为了方便使用,我们可以将Teleport物体设置为预制体,这样在以后的场景中,我们就不必要每次都要重复很多工作了。

 

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值