Unity2D:简单自动瓷砖的实现

unity2017虽然官方支持了瓷砖,但是总觉得不够好用,就自己写了个简单的自动瓷砖,效果如图。

1-1

 

思路是遍历特点范围的每个GameObjec,然后计算坐标,再通过坐标来处理瓷砖间的相对关系,顺便也会合并Collider2D来节省资源。

先看父类,主要处理变换坐标的工作:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AutoTile : MonoBehaviour
{
	public float		sideLength;                             /* 图块边长 */
	public bool		isCoillder;                             /* 是否合并碰撞体 */
	public GameObject	startOne;                               /* 左下角的起始块,标定开始计算的位置 */
	List<ArrayList>		mapContainer = new List<ArrayList>();   /* 存储地图 */

	protected Transform[]	childrenTransforms;                     /* 存储子物体 */
	protected Vector2	basePoint;                              /* 从startone获取的起点 */

	/* 初始化起点 */
	protected void intinalBasePoint()
	{
		basePoint = startOne.transform.position;
		/* Debug.Log ("BasePoint=" + basePoint); */
	}


	/* 初始化存储块信息的变长数组 */
	protected void intinalMapContainer()
	{
		/* 获取子物体的数组 */
		childrenTransforms = GetComponentsInChildren<Transform> ( false );
		foreach ( Transform tra in childrenTransforms )
		{
			/* 利用tag判断是否纳入计算 */
			if ( tra.tag == "Tile" )
			{
				Vector2 pos = tra.position;
				int	x, y;
				x	= (int) ( (pos.x - basePoint.
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值