c# – Snake游戏尾巴
发布时间:2020-12-15 20:55:34 所属栏目:百科 来源:网络整理
导读:我正在Unity的2D蛇游戏中工作. 这是蛇的头: 这是蛇尾的延伸.每当我吃东西时都会添加它: 我让蛇的头部移动,但我的问题是如何移动扩展?我试图将这些扩展作为孩子添加到头部,但是当我旋转头部时,它会同时旋转所有扩展,但我想像链一样旋转一个扩展.我正在使用
我正在Unity的2D蛇游戏中工作.
这是蛇的头: 这是蛇尾的延伸.每当我吃东西时都会添加它: 我让蛇的头部移动,但我的问题是如何移动扩展?我试图将这些扩展作为孩子添加到头部,但是当我旋转头部时,它会同时旋转所有扩展,但我想像链一样旋转一个扩展.我正在使用C#脚本 if (position == 1 || position == 3) { if (Input.GetKey (KeyCode.UpArrow)) { position = 2; rotation=90; transform.rotation=Quaternion.Euler(0,rotation); } else if (Input.GetKey (KeyCode.DownArrow)) { position = 4; rotation=270; transform.rotation=Quaternion.Euler (0,rotation); } } else if (position == 2 || position == 4) { if(Input.GetKey(KeyCode.RightArrow)){ position=1; rotation=0; transform.rotation=Quaternion.Euler (0,rotation); } else if(Input.GetKey(KeyCode.LeftArrow)){ position=3; rotation=180; transform.rotation=Quaternion.Euler (0,rotation); } } if (position == 1) transform.Translate (Vector3.right * movementSpeed * Time.deltaTime,Space.World); else if (position == 2) transform.Translate (Vector3.up* movementSpeed * Time.deltaTime,Space.World); else if(position==3) transform.Translate(Vector3.left*movementSpeed*Time.deltaTime,Space.World); else if(position==4) transform.Translate (Vector3.down*movementSpeed*Time.deltaTime,Space.World); int i; for (i=1; i<extensions.Count; i++) { extensions[i].transform.position=extensions[i-1].transform.position; extensions[i].transform.rotation=extensions[i-1].transform.rotation; } 解决方法
也许是一个arraylist.
然后在位置0设置父(snakehead) 1你设置孩子,2下一个孩子,然后继续. 并为每一帧每一个动作. 您知道每个部分之前的位置,并为每个子项设置了该部分. 更新每个零件的位置时,可以将对象的位置设置为数组的值. 您无法设置父属性,因为您会遇到意外行为. 如果我写错字和简短回答,请原谅. (我在打电话) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |