Unity实现3D贪吃蛇的移动代码

本文实例为大家分享了Unity实现3D贪吃蛇移动的具体代码,供大家参考,具体内容如下

记录一下前段时间写到的一个3D贪吃蛇的移动代码。

链接:Unity实现3D贪吃蛇

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GameManager : MonoBehaviour
{
 List<Transform> bodyList = new List<Transform>();//身体位置的列表
 private float speed = 2f;//移动速度
 public GameObject bodyObj;//用来生成的身体对象
 List<Transform> bodyCreatePostion = new List<Transform>();//身体部分的transfrom 列表
 private float TransOffset=1f;//位置间隔
 private List<Vector2> mapAddress=new List<Vector2>();//前进目标在地图上的位置,
 public Transform firstBody;//第一个身体部件的transfrom
 const int row = 100;//地图宽
 const int col = 100;//地图高
 int step=1;//步伐
 int x=0, z=0;//记录x和z轴的移动量

 // Start is called before the first frame update
 public Vector3[,] map = new Vector3[row, col];//地图
 // Start is called before the first frame update
 void Start()
 {

  for (int i = 0; i < row; i++)//生成地图
  {
   for (int j = 0; j < col; j++)
   {
    map[i, j] = new Vector3(i, 1.5f, j);
   }
  }
  transform.position =map[0,0];将当前位置设为原点
  mapAddress.Add(new Vector2(1,0));//增加第一个目标
  bodyList.Add(transform);//刷新第一个头和一个身体的transform
  bodyList.Add(firstBody);
  mapAddress.Add(new Vector2(0,0));
 }

 // Update is called once per frame
 void Update()
 {
  for (int i = 0; i < row - 1; i++)
  {
   for (int j = 0; j < col - 1; j++)//绘制地图格子
   {
    Debug.DrawLine(map[i, j], map[i + 1, j], Color.red);
    Debug.DrawLine(map[i, j], map[i, j + 1], Color.red);
   }
  }
  if (Input.anyKeyDown)//有任何键按下
  {
   if (Input.GetKeyDown(KeyCode.W) && z != -step)//上
   {
    z = step;
    x = 0;

   }
   if (Input.GetKeyDown(KeyCode.S) && z != step)//下
   {
    z = -step;
    x = 0;

   }
   if (Input.GetKeyDown(KeyCode.A) && x != step)//左
   {
    x = -step;
    z = 0;

   }
   if (Input.GetKeyDown(KeyCode.D) && x != -step)//右
   {
    x = step;
    z = 0;

   }

  }
  Move();

 }
 private void Move()//移动
 {

  if (Vector3.Distance(bodyList[0].position, map[(int)mapAddress[0].x + x, (int)mapAddress[0].y + z]) < 0.7f)//当前坐标和目标位置的距离小于0.5f
  {

   for (int i = mapAddress.Count - 1; i > 0; i--)//刷新后一个的目标为前一个的目标
   {
    mapAddress[i] = mapAddress[i-1];
   }

   mapAddress[0] = new Vector2(mapAddress[0].x + x, mapAddress[0].y + z);//刷新第一个目标的位置

  }
  else
  {
   for (int i = bodyList.Count - 1; i > 0; i--)//移动
   {
    bodyList[i].position = Vector3.MoveTowards(bodyList[i].position,
              map[(int)mapAddress[i - 1].x, (int)mapAddress[i - 1].y], Time.deltaTime * speed);

   }
   bodyList[0].position = Vector3.MoveTowards(transform.position,
             map[(int)mapAddress[0].x + x, (int)mapAddress[0].y + z], Time.deltaTime * speed);
  }
 }

 private void OnCollisionEnter(Collision collision)//碰撞到了食物就增加身体长度
 {

  if (collision.collider.tag == "Food")
  {

   Destroy(collision.collider.gameObject);
   GameObject tmpGameObject=new GameObject();
   Vector2 tmpVec = new Vector2();

   tmpGameObject = Instantiate(bodyObj, map[(int)mapAddress[mapAddress.Count - 1].x+x, (int)mapAddress[mapAddress.Count - 1].y +z], Quaternion.identity);//生成body物体
   tmpVec = new Vector2(mapAddress[mapAddress.Count - 1].x+x, mapAddress[mapAddress.Count - 1].y +z);
   //增加身体的transform和目标向量
   bodyList.Add(tmpGameObject.transform);
   mapAddress.Add(tmpVec);
  }

 }
}

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • unity实现贪吃蛇游戏

    unity贪吃蛇基本原理实现,供大家参考,具体内容如下 原理: 1.每个身体跟着前面的身体移动: 2.蛇头自动一直向前走,可以向左或者向右转弯. 思想: 贪吃蛇的身体有若干个,每个身体有共同的特性,就是跟着前面的身体移动,这里把蛇的身体抽象出出来,用一个SnackBody类来表达,每一节身体都new出一个SnackBody对象,然后操作这个对象实现功能:蛇头可以看做特殊的蛇身体.应该有一个管理器来管理所有的蛇身体,所以有个SnackController类来管理.每段蛇身都有Front,self,

  • unity使用链表实现贪吃蛇游戏

    今天介绍一下如何利用链表结构来创建一条贪吃蛇. 要实现的功能很简单,按下空格键使蛇加长一节,每次按下空格就在蛇尾加一个cube.按下左方向键,控制蛇的移动.如图所示: //贪吃蛇的中心是:定义蛇身第一节,即链表头为temp.链表的子节点为next.蛇头带着temp(链表头)走,temp带着next(链表子节点)走. 1. 创建一个cube设为预设体,作为蛇身的节点.在预设体上面添加BodyScript脚本. using UnityEngine; using System.Collections;

  • Unity实现3D贪吃蛇的移动代码

    本文实例为大家分享了Unity实现3D贪吃蛇移动的具体代码,供大家参考,具体内容如下 记录一下前段时间写到的一个3D贪吃蛇的移动代码. 链接:Unity实现3D贪吃蛇 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameManager : MonoBehaviour { List<Transform> bodyL

  • 使用Python写一个贪吃蛇游戏实例代码

    我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中. 特殊食物: 1.绿色:普通,吃了增加体型 2.红色:吃了减少体型 3.金色:吃了回到最初体型 4.变色食物:吃了会根据食物颜色改变蛇的颜色 #coding=UTF-8 from Tkinter import * from random import randint import tkMessageBox class Grid(object): def __init__(self,

  • 贪吃蛇C语言代码实现(难度可选)

    本文实例为大家分享了C语言实现贪吃蛇的具体代码,供大家参考,具体内容如下 /********************************************************* ********************贪吃蛇(难度可选)******************** **************制作者:Xu Lizi 日期:2012/12/31******** ********************部分函数有借鉴************************ ****

  • JavaScript贪吃蛇的实现代码

    本文实例为大家分享了JavaScript实现贪吃蛇的具体代码,供大家参考,具体内容如下 首先我们要确定贪吃蛇应有的功能 1.通过键盘的上下左右控制蛇的移动方向 2.边界判定,即蛇头超出边界则游戏结束 3.碰撞判定,即蛇头和食物块发生触碰 4.吃到食物积分加1 具体实现 一.html代码 <div class="container"> <!--小蛇移动的操场--> <div id="playground"> <!--小蛇--&

  • C语言实现双人贪吃蛇游戏实例代码

    贪吃蛇双人小游戏,每局游戏两分钟,死亡则直接失败,若时间结束,则分高者获胜.   上源代码: ​ #include <stdio.h> #include <stdlib.h> #include <Windows.h> #include <time.h> #include<stdbool.h> #include <conio.h> #define SNAKESIZE 100 #define MAPWIDTH 118 #define MA

  • python实现一个简单的贪吃蛇游戏附代码

    前言: 不知道有多少同学跟我一样,最初接触编程的动机就是为了自己做个游戏玩? 今天要给大家分享的是一个 pygame 写的“贪吃蛇”小游戏: “贪吃蛇”这个小游戏在编程学习中的常客,因为: 简单,最基本的游戏元素只需要蛇和食物两个就可以进行了.(打飞机还需要三个元素呢,想想分别是什么?)方向的话只要上下左右4个固定方向就可以了.有基本的数据结构和面向对象的思想在其中.游戏开发本身就会用到很多面向对象的概念,而蛇的身体又是一个天然的“链表”结构,太适合用来练习数据结构了.另外比较有趣的一点是,Py

  • unity实现简单贪吃蛇游戏

    本文实例为大家分享了unity实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 首先创建一个头部,编写脚本利用WASD控制头部的移动. Vector3 up=new Vector3(0,1,0); Vector3 down=new Vector3(0,-1,0); Vector3 left=new Vector3(-1,0,0); Vector3 right=new Vector3(1,0,0); Vector3 now;//头部实际前进方向 float timer=0f; float tim

  • java贪吃蛇游戏编写代码

    本文实例为大家分享了java贪吃蛇游戏展示的具体代码,供大家参考,具体内容如下 1.采用MVC(model.view.control)框架模式 2.包和类的关系树形图为: 3.源码: package com.huai; import Java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.util.HashSet; import java.util.LinkedList; import java.u

  • Python 实现 贪吃蛇大作战 代码分享

    感觉游戏审核新政实施后,国内手游市场略冷清,是不是各家的新游戏都在排队等审核.媒体们除了之前竞相追捧<Pokemon Go>热闹了一把,似乎也听不到什么声音了.直到最近几天,突然听见好几人都提到同一个游戏,网上还有人表示朋友圈被它刷屏了.(不过现在微信已经悍然屏蔽了它的分享) 这个游戏就是现在iOS免费榜排名第一的<贪吃蛇大作战>.一个简单到不行的游戏,也不知道怎么就火了.反正一款游戏火了,各路媒体.专家总能说出种种套路来,所以我就不发表意见了.不过这实在是一个挺好实现的游戏,于是

  • pthon贪吃蛇游戏详细代码

    本文实例为大家分享了pthon贪吃蛇游戏的具体代码,供大家参考,具体内容如下 在写Python游戏项目时,最重要的时python中的pygame库.安装pygame库和用法在我CSDN博客另一篇文章上.这里就不详细说了,下边时运行游戏界面. 下边是详细的代码和注释 import pygame,sys,random,time from pygame.locals import * #从pygame模块导入常用的函数和常量 #定义颜色变量 black_colour = pygame.Color(0,

随机推荐