1:移动方式,继承上一个位置,最后一个移动到第一个(改颜色)
2:吃东西,加到最后一个位置,看颜色
3;gu
1:移动方式,继承上一个位置,最后一个移动到第一个(改颜色)
2:吃东西,加到最后一个位置,看颜色
3;gu
Shadow 阴影
Outline 轮廓
Renderer Cavas
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 (隔一段时间)
蛇身有两种移动方式:
第一种:让后面的东西继承上一个的位置
第二种:只挪开蛇屁到蛇脖子,后面的身子继续跟随(颜色会会混乱)不采用
吃东西:
蛇头碰到食物(蛇身在后面加)
死亡
自由模式
1、AudioSource.PlayClipAtPoint
所有的移动都是对头而言的。碰撞盒
实现功能:移动头和身、吃食物加长身体和销毁事物
transfrom 直接控制改变值
enke 一点点移动的目的
2种移动方法:每个物体都移动到它的前一个位置(使用第一种因颜色不同具有奇偶性);把最后的骨头移动到头后的首位 其余的不动
吃东西:往最后面加
死亡:撞到边界和蛇身
跳到上一次蛇头的位置 利用transform
1、蛇身预制体,添加box collider,设置尺寸
2、list集合存储蛇身的transform组件
3、生成蛇身的函数:
image与canvas对齐方法:右边的边框按alt后选最后对齐
锚点和四个点的关系保持相对静止
1、头的方向问题,要与step一致,比如;按W时,step不能是负的
Invoke() 方法是 Unity3D 的一种委托机制
如: Invoke("Test", 5); 它的意思是:5 秒之后调用 Test() 方法;
使用 Invoke() 方法需要注意 3点:
1 :它应该在 脚本的生命周期里的(Start、Update、OnGUI、FixedUpdate、LateUpdate)中被调用;
2:Invoke(); 不能接受含有参数的方法;
3:在 Time.ScaleTime = 0; 时, Invoke() 无效,因为它不会被调用到
Invoke() 也支持重复调用:InvokeRepeating("Test", 2 , 3);
这个方法的意思是指:2 秒后调用 Test() 方法,并且之后每隔 3 秒调用一次 Test() 方法
还有两个重要的方法: