AutoTile 自动拼接(六 大结局) 学习与实践

时间:2023-02-23 17:26:29

昨天在网上找了一些资源图片,这回就不用担心 背景资源不多的问题了,现在我一边 制作,一边发布文章。

AutoTile 自动拼接(六 大结局) 学习与实践

各种各样,500多个,这里还是特别感谢 ,万恶的资本主义,不设密码就给我分享。

在制作前,大家看下这里的图片,和我之前的图片规格,有点不一样,他们大了一号。

AutoTile 自动拼接(六 大结局) 学习与实践

细心的朋友,可以拿这张 ,和我 之前的图比较下。

哎,为了这500多张的 图,我也只能稍微改改 切图了,但做法都是一样的。

里面有一些 动画图,需要切一下,我推荐

AutoTile 自动拼接(六 大结局) 学习与实践

这个软件,360会认为木马,其实没什么事情的,看你自己了。

AutoTile 自动拼接(六 大结局) 学习与实践

很方便吧,其实 不用切,改下程序也可以,不过我懒。。。。。。

u3d中也是按16*16格子切,当然最后就有48张图了。

好了,前期准备先说到这里,下面 开始 编写代码

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using LitJson;
using System; public class myDown : MonoBehaviour
{
public Transform trs;
public Transform go;
int _x, _y;
void Start()
{
_x = go.GetComponent<ResourcesSprite>().Widths - ;
_y = go.GetComponent<ResourcesSprite>().Heights - ;
} void Update()
{ } void OnFingerDown(FingerDownEvent e)
{ /* your code here */
RaycastHitGet(e.Position);
}
void OnDrag(DragGesture gesture)
{
DragGesture dragGesture = (gesture.State == GestureRecognitionState.Ended) ? null : gesture;
if (dragGesture)
{
RaycastHitGet(gesture.Position);
}
}
void RaycastHitGet(Vector3 e)
{
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(e), Vector2.zero);
if (hit)
{
if (hit.collider.tag == "sence")
{
int type = ; for (int i = ; i < trs.childCount; i++)
{
if (trs.GetChild(i).GetComponent<Toggle>().isOn)
{
type = i;
}
}
switch (type)
{
case : OnOneFourthFind(hit.collider.transform, "play0");
break;
case : OnOneFourthFind(hit.collider.transform, "play1");
break;
case : OnOneFourthFind(hit.collider.transform, "play2");
break;
case : OnOneFourthFind(hit.collider.transform, "play3");
break;
case : OnOneFourthFind(hit.collider.transform, "play4");
break;
case : OnOneFourthFind(hit.collider.transform, "play5");
break;
case : OnOneFourthFind(hit.collider.transform, "play6");
break;
case : OnOneFourthFind(hit.collider.transform, "play7");
break;
case : OnOneFourthFind(hit.collider.transform, "play8");
break;
case : OnOneFourthFind(hit.collider.transform, "play9");
break;
case : OnOneFourthFind(hit.collider.transform, "play10");
break;
case : OnOneFourthFind(hit.collider.transform, "play11");
break;
case : OnOneFourthFind(hit.collider.transform, "play12");
break;
case : OnOneFourthFind(hit.collider.transform, "play13");
break;
case : OnOneFourthFind(hit.collider.transform, "play14");
break;
case : OnOneFourthFind(hit.collider.transform, "play15");
break;
case : OnOneFourthFind(hit.collider.transform, "play16");
break;
case : OnOneFourthFind(hit.collider.transform, "play17");
break;
case : OnOneFourthFind(hit.collider.transform, "play18");
break;
case : OnOneFourthFind(hit.collider.transform, "play19");
break;
case : OnOneFourthFind(hit.collider.transform, "play20");
break;
case : OnOneFourthFind(hit.collider.transform, "play21");
break;
case : OnOneFourthFind(hit.collider.transform, "play22");
break;
case : OnOneFourthFind(hit.collider.transform, "play23");
break;
case : OnOneFourthFind(hit.collider.transform, "play24");
break;
case : OnOneFourthFind(hit.collider.transform, "play25");
break;
case : OnOneFourthFind(hit.collider.transform, "play26");
break;
case : OnOneFourthFind(hit.collider.transform, "play27");
break;
case : OnOneFourthFind(hit.collider.transform, "play28");
break;
case : OnOneFourthFind(hit.collider.transform, "play29");
break;
case : OnOneFourthFind(hit.collider.transform, "play30");
break;
case : OnOneFourthFind(hit.collider.transform, "play31");
break;
case : OnOneFourthFind(hit.collider.transform, "play32");
break; default: break;
}
}
}
} //一对四 查找坐标
void OnOneFourthFind(Transform tr, string keys)
{
int[] st = new int[];
st[] = ;
st[] = ;
st[] = ;
st[] = ;
for (int i = ; i < ; i++)
{
AutoTileShow autoTileShow1 = tr.GetChild(i).GetComponent<AutoTileShow>();
autoTileShow1.keys = keys;
autoTileShow1.Weight = st[i];
}
tr.GetComponent<keyRoot>().keys = keys;
string[] bit = OnWeightRange(tr);
ArrayList arr = OnWeightRangeTr(bit, tr);
arr.Add(tr);
for (int ii = ; ii < arr.Count; ii++)
{
Transform aa = arr[ii] as Transform;
OnWeightNumberFind(aa, aa.GetComponent<keyRoot>().keys);
}
}
//八方向对象获得
ArrayList OnWeightRangeTr(string[] bit, Transform tts)
{
uint[] bbt = new uint[];
ArrayList arr = new ArrayList();
for (int i = ; i < ; i++)
{
if (bit[i] != "")
{
arr.Add(tts.parent.Find(bit[i]));
}
}
return arr;
} //八方向范围获得
string[] OnWeightRange(Transform tts)
{
string[] tt = tts.name.Split(',');
int xx = int.Parse(tt[].ToString());
int yy = int.Parse(tt[].ToString());
string[] bit = new string[]; bit[] = (xx - ) + "," + (yy + );
bit[] = xx + "," + (yy + );
bit[] = (xx + ) + "," + (yy + );
bit[] = (xx + ) + "," + (yy);
bit[] = (xx + ) + "," + (yy - );
bit[] = xx + "," + (yy - );
bit[] = (xx - ) + "," + (yy - );
bit[] = (xx - ) + "," + yy; if (xx == )
{
bit[] = "";
bit[] = "";
bit[] = "";
}
if (xx == _x)
{
bit[] = "";
bit[] = "";
bit[] = "";
}
if (yy == )
{
bit[] = "";
bit[] = "";
bit[] = "";
}
if (yy == _y)
{
bit[] = "";
bit[] = "";
bit[] = "";
}
return bit;
}
//权值检索
void OnWeightNumberFind(Transform tts, string keys)
{
string[] bit = OnWeightRange(tts);
uint[] bbt = new uint[];
for (int i = ; i < ; i++)
{
if (bit[i] != "")
{
if (tts.parent.Find(bit[i]).GetComponent<keyRoot>().keys == keys)
{
bbt[i] = OnConvert(i);
}
else
{
bbt[i] = ;
}
}
else
{
bbt[i] = ;
}
} uint tb = ;
for (int i = ; i < ; i++)
{
tb |= bbt[i];
}
for (int k = ; k < ; k++)
{
tts.GetChild(k).GetComponent<AutoTileShow>().Weight = (int)(GameModel.getInstance().weightSprite[tb][k]);
tts.GetChild(k).GetComponent<AutoTileShow>().open = true;
}
}
//转换
uint OnConvert(int i)
{
uint ty = ;
switch (i)
{
case : ty = ;
break;
case : ty = ;
break;
case : ty = ;
break;
case : ty = ;
break;
case : ty = ;
break;
case : ty = ;
break;
case : ty = ;
break;
case : ty = ;
break;
}
return ty;
}
}
using UnityEngine;
using System.Collections; public class AutoTileShow : MonoBehaviour
{
int i = ;
private Sprite m_Image;
public bool open = true;
Sprite[] sp; void Start()
{
if (!gameObject.GetComponent<SpriteRenderer>())
{
m_Image = gameObject.AddComponent<SpriteRenderer>().sprite;
} sp = new Sprite[];//图片数据临时存放
} float timebattle;
public string keys;
public int Weight;
int maxTotal = ;
void Update()
{ timebattle -= Time.deltaTime;
if (timebattle <= )
{
timebattle = .2f;//闪烁频率 if (open)
{
switch (keys)
{
case "play0":
case "play2":
case "play3":
case "play4":
case "play5":
case "play6":
case "play7":
case "play8":
case "play9":
case "play10":
case "play11":
case "play12":
case "play13":
case "play14":
case "play15":
case "play16":
case "play17":
case "play18":
case "play19":
case "play20":
case "play21":
case "play22":
case "play23": maxTotal = ;
break;
case "play24":
case "play25": maxTotal = ;
break; case "play26":
case "play27":
case "play28":
case "play29":
case "play30":
case "play31":
case "play32": maxTotal = ;
break;
default: break;
}
sp = OnDirectionAutoTile(keys, Weight); open = false;
}
if (i > maxTotal - )
{
i = ;
}
m_Image = sp[i];
gameObject.GetComponent<SpriteRenderer>().sprite = m_Image;
i++;
}
} public Sprite[] OnDirectionAutoTile(string key, int number)
{
Sprite[] mapTile = new Sprite[];
mapTile = GameModel.getInstance()._TileSprite[number + "," + key];
return mapTile;
}
}

这么一贴,估计没几个朋友有兴趣继续看下去了。

好吧。上demo

链接:http://pan.baidu.com/s/1hrdKyHm 密码:h6wl

有什么不懂的,可以在 年后10天,提问

AutoTile 自动拼接(六 大结局) 学习与实践的更多相关文章

  1. AutoTile 自动拼接(一) 学习与实践

    恩,大家好,这两天江苏冷空气袭击,下了今年 第一场第二场雪. 不过今天我要说的 ,和 上面的 屁关系都没有. 今天要说的是 2d无缝自动拼接.大家有没有玩过  RPG Maker VX Ace. 类似 ...

  2. AutoTile 自动拼接(五) 学习与实践

    今天不讲 权值检索,考虑到后期 自动拼接 做出来 更好玩,操作更方便.所以 今天我 补充一节, 网格计算与操作. 具体就是这么个效果,和地图编辑器一样,不过图块还是没有自然的拼接,这个一定一定是 下一 ...

  3. AutoTile 自动拼接(四) 学习与实践

    今天主要来说下,数据绑定. 之前第一章,我说到 把 资源图 画成格子,你们应该还有印象吧. 那么,当我 知道 格子数据,能否拿到 资源对应的图片呢? 大家先复习一下 第一章,发现很多格子数据 是相同的 ...

  4. AutoTile 自动拼接(三) 学习与实践

    今天把 图像数据保存完善了一下.天冷,没打多少字,见谅. 接着昨天说的,首先我们打开u3d,做一个空物体gameobject,然后做几个sprite,如下图所示 上面的sprite 排成四个 正方形. ...

  5. AutoTile 自动拼接(二) 学习与实践

    开始代码前,我们要做点准备工作. 下面 跟着我做. 首先我 扣了一个 图. 这个是 做 水的资源,所以是动态的,我把其余两张也扣了出来. 看起来一样,不是,这样看肯定 看不出所以然,你们先放到u3d中 ...

  6. 孤荷凌寒自学python第六十九天学习并实践beautifulsoup对象用法2

    孤荷凌寒自学python第六十九天学习并实践beautifulsoup对象用法2 (完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步 ...

  7. u-boot分析(十一)----MMU简单分析&vert;u-boot分析大结局&vert;学习规划

    u-boot分析(十一) 通过前面十篇博文,我们已经完成了对BL1阶段的分析,通过这些分析相信我们对u-boot已经有了一个比较深入的认识,在BL2阶段大部分是对外设的初始化,并且有的我们已经分析过, ...

  8. AutoTile 自动拼接 番外篇(自动融合技术)

    http://pan.baidu.com/s/1dDQyfSl 密码:ttud 先睹为快吧. 之后 还差一个 智能替换 技术.

  9. 11种常用css样式学习大结局滚动条与显示隐藏

    滚动条展示 overflow-x: hidden;/*是否对内容的左/右边缘进行裁剪*/overflow-y: hidden;/*是否对内容的上/下边缘进行裁剪*/overflow:scroll;/* ...

随机推荐

  1. jquery右键菜单

    点击这里体验效果 如果要屏蔽页面原来的右键菜单,请设置disable_native_context_menu:true 以下是源代码: <!DOCTYPE html> <html&g ...

  2. Mojette

    Mojette Transform 是由Polytech Nantes的IRCCYyN实验室的Jeanpierre Guédon首先提出的一种离散的几何转换,它来源于Radon transform,是 ...

  3. mac 安装mvn 失败

    安装过程遇到2个问题 1.java版本不对 2.Error: JAVA_HOME is not defined correctly. We cannot execute $/usr/libexec/j ...

  4. Date对象之应用技巧

    new Date(2014,4,15);设置日期为2014年4月15日 var cur=new Date(); var prev=new Date(cur.setDate(cur.getDate()- ...

  5. Linux后台开发面试问题汇总

    个人从事安全后台开发,当然是linux环境下的了.举几个常见的问题.1. 数据结构基础.比如实现一个最简单的哈希表.2. 操作系统基础.linux进程模型,堆/栈的区别,大概的位置,各往哪个方向生长, ...

  6. mysql一库多表查询主键

    mysql> show databases; mysql> use information_schema; mysql> show tables; mysql> select ...

  7. python实现汉诺塔移动

    汉诺塔问题 汉诺塔是根据一个传说形成的一个问题.汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大 ...

  8. Python中从B类中调用A类的方法。

    好久没上了,Python还在学--最近进度有点慢... 下面代码记录了一个不太好理解的点,自己写了个小例子,总算是理顺了. B类想要调用A类,自己在网上看了一下其他人的回复:创建A类的实例,直接调用这 ...

  9. 原生JS实现tab切换--web前端开发

    tab切换非常常见,应用非常广泛,比较实用,一般来说是一个网站必不可少的一个效果.例如:https://123.sogou.com/中的一个tab部分: 1.案例源代码 <!DOCTYPE ht ...

  10. jmeter beanshell遍历接口返回的json数组

    import java.util.LinkedHashMap; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.Pred ...