U3D 贪吃蛇笔记
知识点:
1 用来控制游戏是否暂停:Time.scale = 0 / 1;
2 根据文件名加载资源:
在project视图中添加Resources文件夹(名字必须为Resources),将文件放置在此文件夹下。
1 Resources.Load<Sprite>(PlayerPrefs.GetString("SnakeBody1", "sb0201"));
3 蛇身的移动
1 private List<Transform> m_list = new List<Transform>(); 2 private void Move() 3 { 4 Vector3 pos = transform.localPosition; 5 transform.localPosition = new Vector3(pos.x + x, pos.y + y, pos.z); 6 7 if (m_list.Count > 0) 8 { 9 //将最后一个位置移动最前面(效率高,但蛇身颜色有变化不适用) 10 //m_list.Last().localPosition = pos; 11 //m_list.Insert(0, m_list.Last()); 12 //m_list.RemoveAt(m_list.Count - 1); 13 14 for (int i = m_list.Count - 1; i > 0; --i) 15 { 16 m_list[i].localPosition = m_list[i - 1].localPosition; 17 } 18 m_list[0].localPosition = pos; 19 } 20 21 }
4 蛇头转弯时,旋转图片
1 transform.localRotation = Quaternion.Euler(0, 0, 90); //绕z轴旋转
5 生成新的蛇身时要禁用默认的坐标,自己指定相对坐标
1 GameObject gBody = Instantiate(m_bodyPrefab); 2 gBody.transform.localPosition = new Vector3(2000, 2000, 0); //不能用position,要用localPosition 3 gBody.GetComponent<Image>().sprite = m_bodySprites[iIndex]; 4 gBody.transform.SetParent(m_parent, false); //传入false不需要指定默认坐标 5 m_list.Add(gBody.transform);
完整的源码:https://github.com/PoorMonk/Snake.git
浙公网安备 33010602011771号