print()
print()
在sh里找到canvas 的transform(定义的canvas类型是transform)
不好的方法 最后一个依次移到第一个 last方法要引入linking namespace
-1 是最后一个
.Last() list中最后一个元素
移动方式。
让蛇身,蛇尾移动到射脖子。
bodylist 是按照顺序排列的,就相当于是蛇身。
localPosition。 和position区别应该是坐标系使用的不同吧。
生成在圆点的问题,可以通过,生成到其他位置来解决。
标志位,就是通过bool变量啥啥的传过来,然后进行控制。
尾巴挪到头的位置。
贪吃蛇移动
方法一:只移动蛇头,蛇尾移到原来蛇头位置后
1.代码:移动函数下
//使用需要引入Linq
if(bodyList.Count>0)
{
bodyList.Last().localPosition = headPos;
bodyList.Insert(0,bodyList.Last());
bodyList.Remove(bodyList.count-1);
}
2.将Grow()放入碰撞函数
3.在监视面板为蛇身图片赋值
4.出现问题,由于实例化后的蛇身会出现在中心区域,然后通过计算在到它该有的位置,所以需要实例化的蛇身在相机外
GameObject body = Instantiate(bodyPrefab,new Vector3(2000,2000,0),Quaterntion.identity);
[任务16:13-处理蛇身的移动之方法一]
导入Last
直接在代码最开头加上
using System.Linq;
list集合
bodylist.last(),需要引入新的命名空间
bodylist.insert
bodylist.Add
bodylist.RemoveAt
bodylist.count
双色蛇身也可以用第一种方式,只要在每次移动后遍历所有的身体部位,刷新图片样式即可
if (bodyList.Count > 0)
{
bodyList[bodyList.Count - 1].localPosition = headPos;
bodyList.Insert(0, bodyList[bodyList.Count - 1]);
bodyList.RemoveAt(bodyList.Count - 1);
for (int i = 0; i < bodyList.Count; i++)
{
bodyList[i].GetComponent<Image>().sprite = bodySprites[i % 2 == 0 ? 0 : 1];
}
}
让canvas获取值
最后一个挪到蛇头的
Last方法让最后一个蛇身的位置移动到蛇头的地方
Insert(待插入的位置,从哪里)
再用RemoveAt(参数选择位置)移除
最开始的时候没有吃食物,数组为空,有空指针
屏幕中间的蛇身让先实例化在屏幕外边