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

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

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

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

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

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

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

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

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简单分析|u-boot分析大结局|学习规划

    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. HTTP Status 400 - Required request part 'file' is not present

    今天使用Spring MVC做一个文件上传的功能,在提交表单的时候出现了如下错误:

  2. 理解php的opcode

    Opcode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL,举个例子,比如你写下了如下的PHP代码: <?php echo "Hello Wor ...

  3. 设n是奇数,证明:16|(n4+4n2+11)(整除原理1.1.1)

    设n是奇数,证明:16|(n4+4n2+11) 解: 令n=2k+1,k∈z n4+4n2+11 =(2k+1)4+4(2k+1)2+11 =(4k2+4k+1)2+(2k+1)2+11 =16k4+ ...

  4. onbeforeunload与a标签在IE中的冲突bug(转载)

    onbeforeunload与a标签在IE中的冲突bug   onbeforeunload 是window的一个事件,目前Firefox,IE都支持,主要用来提示用户是否真的要离开该页面,通常在一些比 ...

  5. Shell grep 和正则

    在grep中正则有三种模式, 分别是基础(-G), 扩展(-E)和Perl(-P)模式 basic 模式 不支持\d, 支持\w \s \b. ?, +, {, |, (, and ) 在basic ...

  6. 笨方法学python--提示别人

    1 上次学到使用raw_input(), 还可以如下使用: age = raw_input("age?") 2 命令名查看raw_input的说明 unit, pydoc raw_ ...

  7. shell编程之sed

    一.sed (Stream Editor) 1.定位行:sed -n '12,~3p' pass #从第12行开始,直到下一个3的倍数行(12-15行)sed -n '12,+4p' pass #从第 ...

  8. 转 s3c2440硬件学习----内存管理单元MMU

    本篇基本是韦东山书上的 一.内存管理单元MMU介绍 内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访 ...

  9. VI/VIM 常用命令

    VI/VIM 常用命令=========== 整理自鸟哥的私房菜 ---------- - 移动光标 命令                    | 描述----------------------- ...

  10. loadrunner使用socket协议来实现客户端对服务器产生压力实例。(通过发送心跳包,达到连接多个客户端的目的)

    #include "lrs.h" vuser_init(){ char *ip; int handler; //编写获取LR分配的Vuser IP函数,将IP保存在ip变量中. i ...