多语言展示
当前在线:375今日阅读:172今日分享:19

unity 战棋移动范围基础创建

此篇在下面的基础上学习,目的是实现下图效果。unity战棋方式移动http://jingyan.baidu.com/article/72ee561a58604ae16138df33.html
工具/原料
1

一台电脑

2

unity4.0

3

unity战棋方式移动 http://jingyan.baidu.com/article/72ee561a58604ae16138df33.html

方法/步骤
1

在上一篇的基础上,创建一个小方块,来表现移动范围,我们给他加上box collider。给我们的猪脚加上box collider。将我们的背景层向后移动一些,因为素材z轴相同的话射线检测会出错。这样前期就准备好了。

2

我们打开脚本就行编辑。完整的脚本我先贴下来:

3

首先我们的思路是鼠标点击猪脚创建范围,没有点击到猪脚的话,就什么都不做,当范围显示的时候,我们的点击范围内的位置,猪脚移动,否则就不移动。知道了这些,我们就需要如下:一个范围标志:public GameObject floor;判断是否选可移动的变量: int Select=0;将我们的范围标志保存到列表中: List floor1=new List();注意:list需要在开头添加using System.Collections.Generic;才能使用。

4

ok,我们先创建范围,想达到的效果如下:

5

我们如下写脚本:int k = 1;int z = 0;for (int i=0; i<7; i++) {for(int j=0;j

6

然后我们的k加了2,也就是第二行创建了3个,z=1也就是向左偏移一个格子。然后到了第三行的时候(i>3)的时候,我们的开始反过来,让每行创建k-2个格子,向右偏移z-1个单位。完成就像这样:注意:floor1.Add(floor0);将每个格子放到list中去,我们下面会用到。

7

然后我们的逻辑如下:

8

所以脚本如下:if (Input.GetMouseButtonDown(0)) { Ray ray = camera.ScreenPointToRay (Input.mousePosition); RaycastHit hit; Physics.Raycast (ray, out hit); if(Select==1){ if(hit.transform.tag=='floor'){ Pos[0]= new Vector3(hit.transform.position.x,player.transform.position.y,0); Pos[1]= new Vector3(hit.transform.position.x,hit.transform.position.y,0); point=0; move (); print (Pos[1]); } for(int i=0;i

9

OK,完工,看看效果吧!

推荐信息