unity 战棋移动范围基础创建

2025-11-06 08:47:15

1、在上一篇的基础上,创建一个小方块,来表现移动范围,我们给他加上box collider。

给我们的猪脚加上box collider。

将我们的背景层向后移动一些,因为素材z轴相同的话射线检测会出错。

这样前期就准备好了。

unity 战棋移动范围基础创建

unity 战棋移动范围基础创建

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

unity 战棋移动范围基础创建

unity 战棋移动范围基础创建

unity 战棋移动范围基础创建

3、首先我们的思路是鼠标点击猪脚创建范围,没有点击到猪脚的话,就什么都不做,当范围显示的时候,我们的点击范围内的位置,猪脚移动,否则就不移动。

知道了这些,我们就需要如下:

一个范围标志:

public GameObject floor;

判断是否选可移动的变量:

int Select=0;

将我们的范围标志保存到列表中:

List<GameObject> floor1=new List<GameObject>();

注意:list需要在开头添加

using System.Collections.Generic;

才能使用。

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

unity 战棋移动范围基础创建

5、我们如下写脚本:

int k = 1;

int z = 0;

for (int i=0; i<7; i++) {

for(int j=0;j<k;j++){

GameObject floor0=(GameObject)Instantiate(floor,new Vector3((i-3)*3.2f+player.transform.position.x,(j-z)*3.2f+player.transform.position.y,0),Quaternion.identity);

floor1.Add(floor0);

}

if(i<3){

z++;

k=k+2;

}else{

z--;

k=k-2;

}

}

如图,我们创建了六行的格子,第一行在猪脚位置向上推移三格(i-3)每个格子3.2大小为3.2f,创建了k个(k=1)也就是1个,让他向左偏移z(z=0)个格子。如果我们不偏移就会向下图一样:

unity 战棋移动范围基础创建

6、然后我们的k加了2,也就是第二行创建了3个,z=1也就是向左偏移一个格子。

然后到了第三行的时候(i>3)的时候,我们的开始反过来,让每行创建k-2个格子,向右偏移z-1个单位。

完成就像这样:

注意:floor1.Add(floor0);将每个格子放到list中去,我们下面会用到。

unity 战棋移动范围基础创建

7、然后我们的逻辑如下:

unity 战棋移动范围基础创建

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<floor1.Count;i++){

Destroy(floor1[i].gameObject);

}

Select=0;

}

else

{

if(hit.transform.tag=="player"){

Crefloor();

Select=1;

}

}

print (hit.transform.tag);

}

怎么删除全部的格子呢,前面我们的list就用到了

for(int i=0;i<floor1.Count;i++){

Destroy(floor1[i].gameObject);

}

我们遍历list,将里面的元素都删除就行了。

9、OK,完工,看看效果吧!

unity 战棋移动范围基础创建

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢