问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Unity2D无限地图的实现(简单好抄)

创作时间:
作者:
@小白创作中心

Unity2D无限地图的实现(简单好抄)

引用
CSDN
1.
https://blog.csdn.net/2301_76156790/article/details/144867312

本文将详细介绍如何在Unity2D游戏中实现无限地图的功能。通过创建一个10*10的2D游戏对象作为基础地图,并结合碰撞体和触发器的使用,实现玩家在上下左右移动时自动进行地图拼接的效果。

实现思路

  1. 第一步: 创建一个10*10的2D游戏对象当做地图

  1. 第二步创建一个空对象并在里面创建8个小的2D对象并调整位置

位置要和之前创建的地图的边张一致(不然不能做到无缝拼接)

  1. 第三步给地图添加碰撞体,给点位添加碰撞体,刚体,并设置为触发器

  1. 第4步创建一个玩家并给地图添加Map标签

同样给玩家添加刚体和碰撞体组件,同样重力质量设为0,设置为触发器
给地图添加标签

  1. 第五步编写玩家脚本 并加到玩家身上
using UnityEngine;
public class PlayercontMap : MonoBehaviour
{
    public GameObject CreatPointcont;
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.tag == "Map")
        {
            CreatPointcont.transform.position = other.transform.position;
            //遍历CreatPointcont所有子对象并显示
            for (int i = 0; i < CreatPointcont.transform.childCount; i++)
            {
                CreatPointcont.transform.GetChild(i).gameObject.SetActive(true);
            }
        }
    }
}

将脚本附加到玩家身上并且将刚刚创建的管理点位的空对象拖到对应位置

  1. 第六步编写地图生成的脚本Creatpoint

先将地图拖到文件夹中做成预制体

using UnityEngine;
public class Creatpoint : MonoBehaviour
{
    public GameObject Map;
    private bool isCreate = true;
    private void OnEnable()
    {
        isCreate = true;//初始创建地图为true
        Invoke("Creat", 0.1f);
    }
    //执行创建地图
    void Creat()
    {
        if (isCreate)
        {
            GameObject mapobj = Instantiate(Map, transform.position, Quaternion.identity);
            gameObject.SetActive(false);
        }
        else
        {
            gameObject.SetActive(false);
        }
    }
    //判断当前位置是否存在地图
    private void OnTriggerStay2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Map")
        {
            isCreate = false;
        }
    }
}

将脚本附加到所有的点位上并将地图预制体拖到这里

  1. 最后一步将点位设置为非激活状态

运行游戏拖动Player就会发现地图自动创建成功了,为了避免地图过多你需要自己管理地图的数量,比如玩家离开过远后删除一些地图。

如果你有更好的生成无限地图的方式欢迎评论区讨论哦。

项目资源包:https://github.com/laozhupeiqia/CreatMap.git

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号