找回密码
 立即注册
查看: 6657|回复: 85

[脚本] Unity3D拼图游戏部分代码

[复制链接]
发表于 2012-11-20 12:31 | 显示全部楼层 |阅读模式



以前看过一段代码,说的是用鼠标在屏幕上拖动图片,但这段代码的扩展性不是很好,拖动任何位置,图片都会移动,且只能拖动一张图片。代码如下:
[code=javascript]
var Tu : Texture2D;
private var first = Vector2.zero;
private var second = Vector2.zero;
private var tempx : float = 0;
private var tempy : float = 0;
function OnGUI () {
GUI.DrawTexture (Rect (tempx, tempy, 50, 50),Tu);
   if(Event.current.type == EventType.MouseDown){
first = Event.current.mousePosition ;
}
   if(Event.current.type == EventType.MouseDrag){
second = Event.current.mousePosition ;
tempx += (second.x-first.x);
tempy += (second.y-first.y);
first = second;
}
}
function Update () {
}
[/code]
  下面贴一段我修改后的代码,这段代码可以实现鼠标必须点击在图片上才能拖动图片,且可以拖动多张图片。拖动某一张图片时,其他图片不会收影响。利用这个思想,你可以实现其他的很多功能,不仅仅是拖动图片,例如可以实现判断图片是否拖入某一正确区域等等(拼图游戏可以用上述方法实现)。

[code=javascript]var Tu : Texture2D;
var Tu1 : Texture2D;
private var first = Vector2.zero;
private var second = Vector2.zero;
private var tempx : float = 0;
private var temp1x : float = 500;
private var tempy : float = 0;
private var temp1y : float = 0;
var IsTu : int = 0;
var IsTu1 : int = 0;
function Update () {
}
function OnGUI () {
GUI.DrawTexture (Rect (tempx, tempy, 50, 50),Tu);
GUI.DrawTexture (Rect (temp1x, temp1y, 50, 50),Tu1);
if(Event.current.type == EventType.MouseDown){
first = Event.current.mousePosition ;
}
if(first.x > tempx && first.x < (tempx+50) && first.y > tempy && first.y < (tempy+50) ){
IsTu = 1;
}
if(first.x > temp1x && first.x < (temp1x+50) && first.y > temp1y && first.y < (temp1y+50) ){
IsTu1 = 1;
}
if(Event.current.type == EventType.MouseDrag && IsTu == 1){
second = Event.current.mousePosition ;
tempx += (second.x-first.x);
tempy += (second.y-first.y);
first = second;
IsTu = 0;
}
if(Event.current.type == EventType.MouseDrag && IsTu1 == 1){
second = Event.current.mousePosition ;
temp1x += (second.x-first.x);
temp1y += (second.y-first.y);
first = second;
IsTu1 = 0;
}
}[/code]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1鲜花 +1 收起 理由
tppr1331 + 1 很给力!

查看全部评分

发表于 2012-11-21 10:19 | 显示全部楼层
{:soso_e147:}
发表于 2012-11-21 16:46 | 显示全部楼层
{:5_387:}{:5_387:}支持 不错
发表于 2012-11-28 12:03 | 显示全部楼层
至此已至此已{:soso__637689327989451638_2:}

点评

回复的是啥?  发表于 2012-11-28 20:11
发表于 2012-11-29 10:30 | 显示全部楼层
我尝试了了一下,您没有给提供配合使用的贴图啊,我不知道该怎么弄出这个效果,烦躁

点评

随便截个图50X50的贴图来就可以啊 加在那2个上面,我都弄出来了  详情 回复 发表于 2012-12-4 14:26
发表于 2012-11-30 15:43 | 显示全部楼层
为什么弄个部分的,来个全的吧,谢谢
发表于 2012-12-1 09:26 | 显示全部楼层
不错 收集到
发表于 2012-12-4 14:26 | 显示全部楼层
胡椒孙 发表于 2012-11-29 10:30
我尝试了了一下,您没有给提供配合使用的贴图啊,我不知道该怎么弄出这个效果,烦躁

随便截个图50X50的贴图来就可以啊 加在那2个上面,我都弄出来了
发表于 2012-12-7 15:40 | 显示全部楼层
支持一下 谢谢分享
发表于 2013-4-27 09:13 | 显示全部楼层

不错 不错 不错{:soso__3922851084632044791_6:}

点评

var 怎么是错误的我是用c#语言 还有rect 不能当做变量使用  发表于 2013-8-21 15:08
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-23 20:56 , Processed in 0.183599 second(s), 34 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表