unity学习之初入贪吃蛇(一)

本文介绍了使用Unity制作贪吃蛇游戏的过程,重点在于蛇的移动逻辑实现和NPC的设计。通过设定AI的移动策略,包括避开边界和蛇身,追逐食物以及随机移动,来增加游戏趣味性。目前游戏仍在开发中,期待下一期完成。
摘要由CSDN通过智能技术生成

贪吃蛇

  1. 删除线格式
    一个非常经典的游戏,这个相信大家都玩过,但它的运行其实要求也是很多的。下面是做贪吃蛇时写的一段源码,主要是对蛇的移动,进行实现。
// Move()片段
for( int i = 1; i <= _curSpeedScale; i++ ) {
   
            _paths.push_front( _headPos + _dir * _initSpeed 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的贪吃蛇游戏的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. 运行游戏,你现在应该可以看到一个完整的贪吃蛇游戏,其中贪吃蛇可以吃食物并增加身体长度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值