欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

unity实现贪吃蛇游戏

程序员文章站 2023-09-06 17:12:12
unity贪吃蛇基本原理实现,供大家参考,具体内容如下原理:1、每个身体跟着前面的身体移动;2、蛇头自动一直向前走,可以向左或者向右转弯。思想:贪吃蛇的身体有若干个,每个身体有共同的特性,就是跟着前面...

unity贪吃蛇基本原理实现,供大家参考,具体内容如下

原理:

1、每个身体跟着前面的身体移动;
2、蛇头自动一直向前走,可以向左或者向右转弯。

思想:

贪吃蛇的身体有若干个,每个身体有共同的特性,就是跟着前面的身体移动,这里把蛇的身体抽象出出来,用一个snackbody类来表达,每一节身体都new出一个snackbody对象,然后操作这个对象实现功能;蛇头可以看做特殊的蛇身体。应该有一个管理器来管理所有的蛇身体,所以有个snackcontroller类来管理。每段蛇身都有front,self,oldpos三个属性。

unity实现贪吃蛇游戏

using system.collections;
using system.collections.generic;
using unityengine;

public class snackbody
{
  public snackbody front; //表示 前一段蛇身
  public transform self; //表示 当前蛇身
  vector3 oldpos; //当前蛇身的前一个位置

  public snackbody(snackbody tmpfront, transform tmpself)
  {
    front = tmpfront;
    self = tmpself;
    oldpos = tmpself.position;
  }

  //这一节蛇身已经向前移动了,更新oldpos
  public void reflash()
  {
    oldpos = this.self.position;
  }

  //跟着前面的蛇身
  public void followfront()
  {
    self.position = front.oldpos; //更新蛇身的位置
    front.reflash(); 
  }
  
  public virtual void moveforward(){}
  }

public class snackhead : snackbody
{
  //继承基类
  public snackhead(snackbody tmpfront,transform tmpself):base(tmpfront,tmpself) 
  {
  }
  public override void moveforward()
  {
    self.translate(-self.forward, space.world);
  }

  /// <summary>
  /// 向右移动
  /// </summary>
  public void turnright()
  {
    vector3 tmpangle = self.localeulerangles;
    tmpangle.y += 90;
    self.localeulerangles = tmpangle;
  }

  /// <summary>
  /// 向左移动
  /// </summary>
  public void turnleft()
  {
    vector3 tmpangle = self.localeulerangles;
    tmpangle.y -= 90;
    self.localeulerangles = tmpangle;
  }
}
using system.collections;
using system.collections.generic;
using unityengine;

public class snackcontroller : monobehaviour {

  list<snackbody> allbodys; //存储所有的蛇身

  public transform snackhead;
  public transform bodyone;
  public transform bodytwo;

  // use this for initialization
  void start () {

    allbodys = new list<snackbody>();

    snackhead tmphead = new snackhead(null, snackhead);
    allbodys.add(tmphead);

    snackbody tmponebody = new snackbody(tmphead, bodyone);
    allbodys.add(tmponebody);

    snackbody tmptwobody = new snackbody(tmponebody, bodytwo);
    allbodys.add(tmptwobody);

    startcoroutine(movefront());
  }

  ienumerator movefront()
  {
    while(true) //用一个死循环来让蛇一直移动
    {
      allbodys[0].moveforward();

      yield return new waitforseconds(0.5f);

      for(int i=1;i<allbodys.count; i++)
      {
        allbodys[i].followfront();
        yield return new waitforseconds(0.2f);
      }
    }
  }
 
 // update is called once per frame
 void update () {
 
    if(input.getkeydown(keycode.a))
    {
      ((snackhead)allbodys[0]).turnleft();
    }

    if (input.getkeydown(keycode.d))
    {
      ((snackhead)allbodys[0]).turnright();
    }
  }
}

unity实现贪吃蛇游戏

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

c++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

javascript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

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