贪吃蛇—蓝鸥游戏/AR/VR在线公开课小项目Dome(一)

贪吃蛇—蓝鸥游戏/AR/VR在线公开课小项目Dome(一)

1、首先我们要分析一下贪吃蛇这个游戏的需求!

2、利用Unity的提供的素材,简单的模拟一下贪吃蛇这个游戏!

3、给蛇头添加一个刚体

4、给蛇头添加一个脚本,创建两个方法 Turn ();Move ();用脚本控制蛇头移动方向和用户键盘监听事件。

 

5、接下来请观看贪吃蛇—游戏/AR/VR在线公开课小项目Dome(二)

如果想要零基础学习游戏/AR/VR在线课程,欢迎到CSDN学院搜索“unity3D-游戏/AR/VR在线就业班”免费视频进行学习!

using UnityEngine;
using System.Collections;

//枚举表示蛇头移动的方向
public enum HeadDir{
    Up,// 上
    Down,//下
    Left,//左
    Right,//右
    
}
public class HeadCtrl : MonoBehaviour {
    
    //移动速度,米/秒
    public float speed;
    //计时器用来记录移动的时间
    private float _Timer=0f;
    //蛇头当前移动的方向
    private HeadDir _CurrentDir=HeadDir.Up;
    //接下来蛇头移动的方向
    private HeadDir _NextDir=HeadDir.Up;


    private void Update()
    {

        Turn ();
        Move ();
    }

    private void Turn(){

        //监听用户按键事件W
        if (Input.GetKey (KeyCode.W)) 
        {
            //设定接下来蛇头移动的方向
            _NextDir= HeadDir.Up;
            //检测按键是否有效
            if(_CurrentDir==HeadDir.Down)
            {
                //如果按键无效,修正接下来移动的方向
                _NextDir = _CurrentDir;
            }

        }
        //监听用户按键事件S
        if (Input.GetKey (KeyCode.S)) 
        {
            //设定接下来蛇头移动的方向
            _NextDir =HeadDir.Down;
            //检测按键是否有效
            if(_CurrentDir==HeadDir.Up)
            {
                //如果按键无效,修正接下来移动的方向
                _NextDir = _CurrentDir;
            }

        }
        //监听用户按键事件A
        if (Input.GetKey (KeyCode.A)) 
        {
            //设定接下来蛇头移动的方向
            _NextDir =HeadDir.Left;
            //检测按键是否有效
            if(_CurrentDir==HeadDir.Right)
            {
                //如果按键无效,修正接下来移动的方向
                _NextDir = _CurrentDir;
            }
        }
        //监听用户按键事件D
        if (Input.GetKey (KeyCode.D)) 
        {
            //设定接下来蛇头移动的方向
            _NextDir = HeadDir.Right;
            //检测按键是否有效
            if(_CurrentDir==HeadDir.Left)
            {
                //如果按键无效,修正接下来移动的方向
                _NextDir = _CurrentDir;
            }
        }
    }
    private void Move()
    {
        //将计时器累加时间增量
        _Timer += Time.deltaTime;

        //判断当前帧是否应该移动
        if(_Timer>=(1/speed))
        {
            //向前移动一个单位
            transform.Translate (Vector3.forward);
            //重置计时器
            _Timer=0f;

        }
    }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值