免费网站注册 建站,36氪网站用什么程序做的,江西建设厅官方网站,平台营销推广方案说明#xff1a;本教程实现的是在2D游戏中玩家在游戏中上下左右移动的时候自动进行地图拼接的功能#xff0c;如果你只想实现左右移动的无限地图#xff0c;那么这篇博客也能起到一定参考作用。
思路 第一步#xff1a; 创建一个10*10的2D游戏对象当做地图 第二步创建一个…说明本教程实现的是在2D游戏中玩家在游戏中上下左右移动的时候自动进行地图拼接的功能如果你只想实现左右移动的无限地图那么这篇博客也能起到一定参考作用。
思路 第一步 创建一个10*10的2D游戏对象当做地图 第二步创建一个空对象并在里面创建8个小的2D对象并调整位置 位置要和之前创建的地图的边张一致不然不能做到无缝拼接
第三步给地图添加碰撞体给点位添加碰撞体刚体并设置为触发器 第4步创建一个玩家并给地图添加Map标签 同样给玩家添加刚体和碰撞体组件同样重力质量设为0设置为触发器 给地图添加标签 第五步编写玩家脚本 并加到玩家身上
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);}}}
}将脚本附加到玩家身上并且将刚刚创建的管理点位的空对象拖到对应位置 第六步编写地图生成的脚本Creatpoint
先将地图拖到文件夹中做成预制体 using UnityEngine;public class Creatpoint : MonoBehaviour
{public GameObject Map;private bool isCreate true;private void OnEnable(){isCreate true;//初始创建地图为trueInvoke(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;}}
}将脚本附加到所有的点位上并将地图预制体拖到这里 最后一步将点位设置为非激活状态 运行游戏拖动Player就会发现地图自动创建成功了为了避免地图过多你需要自己管理地图的数量比如玩家离开过远后删除一些地图。 如果你有更好的生成无限地图的方式欢迎评论区讨论哦。
项目资源包https://github.com/laozhupeiqia/CreatMap.git