20812人加入学习
(123人评价)
Unity初级案例 - 贪吃蛇(Unity2017.2.0)

制作于2017.12.16

价格 免费

所有的移动都是相对蛇头移动

 

功能:

1.自身移动

2.蛇身移动,通过蛇头管理,并不是蛇身挂脚本自己移动

3.吃食物,蛇身变长

 

移动用invokerepeat控制

后面每一节蛇身继承上一节位置

或者将最后一节移动到蛇颈位置,但如果是颜色有要求则需要改动颜色

 

吃到食物后,往后加节点

[展开全文]

1:移动方式,继承上一个位置,最后一个移动到第一个(改颜色)

2:吃东西,加到最后一个位置,看颜色

3;gu

[展开全文]

Snake   Disabled

Display Besolution Dialog

 

[展开全文]

 完成换肤

记录的文件名,通过加载名称

使用resources文件夹,把需要加载的图片复制到resources文件夹中

使用一个方法去加载://通过resources.load

resources.load()

foreach(遍历父物体的所有的子物体  )

 

[展开全文]

 让蛇可以通过边界进行传送(撞自己和边界都会死亡)然后发生粒子特效  

 

[展开全文]

处理蛇身的移动方法二:

void move()//移动函数

{

headpos用来记录蛇头的位置

然后再实例化出来

gameobject .transform.localposition=new vector3(上次蛇头的x位置加上移动x,上次的蛇头y的位置加上移动的y,蛇头的z位置);

如果蛇身的长度大于零

 {//思路:让最后的蛇身往前挪一个,一直到接近原来蛇头的那一个,移动到新的蛇头位置的后面

for(i=bodylist.count-2;i>=0;i--){

bodylist[i+1].localposition=bodylist[i].localposition

}

bodylist[0].localposition=headpos;

}

}

[展开全文]

食物吃掉之后在生成

把蛇头添加box collider 

istrigger勾选

添加刚体(不要使用重力)

ontriggerenter2d

 

[展开全文]

食物的随机生成

食物生成是要step的倍数

public int x=21;

public in y=11;

public in y=11;

public gameobject foodprefab;

public sprite[] foodsprites;

 

void makefood()

{

int idex=random.range(0, foodsprites.lenth)

}

food .getcomponent

instantiate()实例化

 

[展开全文]

为什么不直接使用Horizontal,Vertical来控制上下左右移动?

float h = Input.GetAxis("Horizontal");      //前后移动
        transform.Translate(Vector3.right * h * Time.deltaTime * 10f);
        float v = Input.GetAxis("Vertical");      //上下移动
        transform.Translate(Vector3.up * v * Time.deltaTime * 10f);
四元数.旋转

gameObect.transform.localRotoin=Quaternion.Euler(0,0,180);//向后

gameObect.transform.localRotoin=Quaternion.Euler(0,0,90);//向右边

gameObect.transform.localRotoin=Quaternion.Euler(0,0,-90);//向左边

代码加速

if(input.Getkeydown(keycode.space)

{

cancelinvoke();

invokerepeat()

}

 

[展开全文]

制作蛇头移动

image

创建脚本:snakehead

public float  vlocity=0.35f;//速度

public int step;

private vecto3 headpos;

private int x; 

private int y;//下一步要去的增量

void start()

{

invokerepete("传入要调用的函数方法",隔多久调用,速度)//重复调用

}

void update ()

{

}

 

void  move()

{

gameObect.transform.localpostion=new vector3( );

 

 }

 

 

[展开全文]

边界模式

invoke repeat (隔一段时间)

蛇身有两种移动方式:

第一种:让后面的东西继承上一个的位置

第二种:只挪开蛇屁到蛇脖子,后面的身子继续跟随(颜色会会混乱)不采用

吃东西:

蛇头碰到食物(蛇身在后面加)

死亡

自由模式

 

 

 

[展开全文]

所有的移动都是对头而言的。碰撞盒

实现功能:移动头和身、吃食物加长身体和销毁事物

transfrom 直接控制改变值

enke 一点点移动的目的

2种移动方法:每个物体都移动到它的前一个位置(使用第一种因颜色不同具有奇偶性);把最后的骨头移动到头后的首位 其余的不动

吃东西:往最后面加

死亡:撞到边界和蛇身

跳到上一次蛇头的位置 利用transform

[展开全文]

1、蛇身预制体,添加box collider,设置尺寸

2、list集合存储蛇身的transform组件

3、生成蛇身的函数:

  • 三元表达式,,确定新生成蛇身的
  • 设置蛇身图片
  • 设置蛇身的父物体
  • 更新list集合
[展开全文]

image与canvas对齐方法:右边的边框按alt后选最后对齐

锚点和四个点的关系保持相对静止

[展开全文]

1、头的方向问题,要与step一致,比如;按W时,step不能是负的

[展开全文]

授课教师

SiKi学院讲师

课程特色

图文(1)
视频(23)
下载资料(1)