用unity写一个贪吃蛇
时间: 2023-07-01 17:07:53 浏览: 122
好的,下面是一个简单的贪吃蛇游戏的Unity实现步骤:
1. 创建一个新的2D Unity项目。
2. 创建一个空白的GameObject,并将其命名为“Snake”。
3. 在“Snake”对象上添加一个Sprite Renderer组件,并将其渲染器模式设置为“Sprite”。
4. 创建一个贪吃蛇头部的Sprite,并将其拖动到Sprite Renderer组件的Sprite属性上。
5. 在“Snake”对象上添加一个Box Collider 2D组件,并将其大小调整为适合贪吃蛇头部的大小。
6. 创建一个C#脚本,并将其命名为“SnakeController”。
7. 在“SnakeController”脚本中添加以下代码:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SnakeController : MonoBehaviour
{
public float speed = 1.0f;
public float rotationSpeed = 1.0f;
private Vector3 direction = Vector3.right;
// Update is called once per frame
void Update()
{
transform.Translate(direction * speed * Time.deltaTime, Space.World);
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
direction = Quaternion.Euler(0, 0, 90) * direction;
}
else if (Input.GetKeyDown(KeyCode.RightArrow))
{
direction = Quaternion.Euler(0, 0, -90) * direction;
}
}
}
```
8. 将“SnakeController”脚本添加到“Snake”对象上。
9. 运行游戏,并使用左右箭头键来控制贪吃蛇的移动。
10. 创建一个预制,包含一个贪吃蛇身体的Sprite,并将其命名为“SnakeBody”。
11. 在“SnakeController”脚本中添加以下代码:
```csharp
public GameObject snakeBodyPrefab;
public int initialBodySize = 3;
private List<GameObject> snakeBody = new List<GameObject>();
void Start()
{
for (int i = 0; i < initialBodySize; i++)
{
AddBodyPart();
}
}
void AddBodyPart()
{
GameObject bodyPart = Instantiate(snakeBodyPrefab);
snakeBody.Add(bodyPart);
if (snakeBody.Count == 1)
{
bodyPart.transform.position = transform.position - direction * 0.5f;
}
else
{
bodyPart.transform.position = snakeBody[snakeBody.Count - 2].transform.position;
}
}
```
12. 将“SnakeBody”预制添加到场景中,并将其位置设置为贪吃蛇头部的位置。
13. 在“SnakeController”脚本中修改Update()方法,将其改为以下代码:
```csharp
void Update()
{
transform.Translate(direction * speed * Time.deltaTime, Space.World);
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
direction = Quaternion.Euler(0, 0, 90) * direction;
}
else if (Input.GetKeyDown(KeyCode.RightArrow))
{
direction = Quaternion.Euler(0, 0, -90) * direction;
}
if (snakeBody.Count > 0)
{
snakeBody[0].transform.position = transform.position - direction * 0.5f;
for (int i = snakeBody.Count - 1; i > 0; i--)
{
snakeBody[i].transform.position = snakeBody[i - 1].transform.position;
snakeBody[i].transform.rotation = snakeBody[i - 1].transform.rotation;
}
}
}
void LateUpdate()
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direction), rotationSpeed * Time.deltaTime);
}
```
14. 运行游戏,你现在应该可以看到一个贪吃蛇在场景中移动了,并且可以通过按下空格键来增加贪吃蛇的身体长度。
15. 在“SnakeController”脚本中添加以下代码,以便在贪吃蛇头部与食物碰撞时增加身体长度:
```csharp
public GameObject foodPrefab;
private GameObject currentFood;
void SpawnFood()
{
if (currentFood == null)
{
currentFood = Instantiate(foodPrefab);
currentFood.transform.position = new Vector3(Random.Range(-8, 8), Random.Range(-4, 4), 0);
}
}
void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject == currentFood)
{
Destroy(currentFood);
currentFood = null;
AddBodyPart();
}
}
```
16. 将“Food”预制添加到场景中,并将其位置设置为随机生成。
17. 运行游戏,你现在应该可以看到一个完整的贪吃蛇游戏,其中贪吃蛇可以吃食物并增加身体长度。
阅读全文