Unity 简单跑酷游戏策划与实现

这篇具有很好参考价值的文章主要介绍了Unity 简单跑酷游戏策划与实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

unity3d做跑酷游戏,Unity零基础课程,unity,游戏策划,游戏引擎

游戏介绍

游戏名称:无尽探险跑酷(Endless Adventure Runner)
游戏类型:无尽跑酷
游戏背景

在一个充满未知和奇迹的世界中,玩家将扮演一名勇敢的探险家,穿越各种神秘的地域,躲避重重障碍,收集宝藏,并挑战自己的极限。

核心玩法
  • 跑酷冒险:玩家控制角色在无尽的道路上不断前进,通过跳跃和滑动来躲避障碍物。
  • 障碍与金币:道路上布满了各种障碍物和金币,需要玩家灵活操作以避免撞击障碍物同时收集金币。
  • 加速带挑战:偶尔会出现加速带,一旦角色踏上,将暂时获得极速冲刺的能力,增加游戏的刺激性和挑战性。
目标受众

无尽探险跑酷适合所有年龄段的玩家,特别是喜欢动作和挑战性游戏的玩家。

技术细节
  • 开发平台:Unity
  • 主要技术点:玩家控制、障碍物和金币生成算法、碰撞检测、UI设计、音效和动画处理。

游戏的业务逻辑

我们将游戏简化了一下!保留了下面的主要功能去开发!这样更适合初学者!

unity3d做跑酷游戏,Unity零基础课程,unity,游戏策划,游戏引擎

1. 角色运动

角色在一条无尽的道路上自动向前跑动。玩家可以通过输入控制角色跳跃或滑动来躲避障碍。

2. 障碍物和金币生成

在道路上随机生成障碍物和金币。障碍物的种类和生成频率随游戏进程逐渐增加。

3. 碰撞检测

检测角色是否与障碍物碰撞或收集到金币。碰撞障碍物会导致游戏结束,收集金币会增加得分。

4. 加速带

在道路上随机放置加速带,玩家角色接触后会获得短暂的速度提升。

5. 计分机制

玩家的得分基于行进的距离和收集的金币数量。游戏结束后显示总得分。

具体实现需要多个脚本,根据面向对象的思想,基本每一个功能都最好是单独的一个脚本!

场景搭建:

unity3d做跑酷游戏,Unity零基础课程,unity,游戏策划,游戏引擎

第一个脚本:玩家移动控制脚本 A\D控制左右移动

这段代码实现了对游戏中玩家的基本移动控制功能,包括左右移动、跳跃

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

public class PlayerCont : MonoBehaviour
{
    //Horizontal
    //1.控制玩家移动,input.getaix
    //2.A、D控制向左、右移动
    //3.W控制跳跃
   public GameObject Player;
    public float lrSPEED = 10F;
    public float JUMPSPEED = 5;
    public float RunSpeed = 10f;

    private void Start()
    {
        //Player = GameObject.Find("HPCharacter");
    }
    private void Update()
    {
        UserInput();
        AwalysRun();
    }
    //*=========================
    void UserInput()
    {
        //Debug.Log("检测用户按下的键盘A D W");
        float MoveZuoY = Input.GetAxis("Horizontal");
        ControlMove(MoveZuoY);
        
        if (Input.GetKey(KeyCode.W))
        {
            Jump();
        }
    }
    void ControlMove(float ZuoyouMove)
    {
        Player.transform.Translate(new Vector3(ZuoyouMove * lrSPEED * Time.deltaTime, 0, 0));

    }
   
    void Jump()
    {
        Player.transform.Translate(new Vector3(0, JUMPSPEED * Time.deltaTime, 0));
        //Debug.Log("角色开始移动了");
    }
    void AwalysRun()
    {
        Player.transform.Translate(new Vector3(0, 0, 1 * RunSpeed * Time.deltaTime));

    }
}

这是一个C#脚本,它被附加到名为PlayerCont的游戏对象上,用于控制游戏中的玩家运动。
以下是代码的部分功能的简单解释:

  1. 在代码的顶部,使用using语句来导入需要的命名空间。其中包含了System.Collections和System.Collections.Generic以及UnityEngine这三个常用的命名空间。
  2. 声明了一个名为Player的公共GameObject变量,用于存储玩家对象。同时声明了三个公有浮点型变量:lrSPEED、JUMPSPEED和RunSpeed,分别用来设置玩家左右移动的速度、跳跃的速度和恒定的前进速度。
  3. 在Start()函数中查找并赋值给Player变量。这个函数会在游戏启动时自动调用。
  4. Update()函数是Unity引擎每帧都会调用的一个方法,可以在这里进行每一帧的游戏逻辑更新。在Update()中调用了UserInput()和AwalysRun()两个函数。
  5. UserInput()函数主要用于获取用户的输入,并根据用户的操作来控制玩家的移动。通过检查用户按下的是哪个键(例如"A"或"D")来决定玩家应该向哪个方向移动,并通过ControlMove()函数实现这一操作。如果用户按下"W"键,则调用Jump()函数使玩家跳跃。
  6. ControlMove()函数将接收一个表示左右方向移动的参数,并将其乘以lrSPEED,然后利用Time.deltaTime来得到一帧内的时间差,计算出这一帧玩家应移动的距离。最后使用Transform.Translate()函数将玩家沿水平轴的方向平移指定距离。
  7. Jump()函数与ControlMove()类似,只不过这次是向上跳跃,会将玩家沿垂直轴的方向平移指定距离。
  8. AwalysRun()函数则始终让玩家保持向前移动。它同样使用Transform.Translate()函数,不过这次是沿z轴的方向移动。

脚本二 触发检测并克隆金币和障碍物

这个脚本用于在主角碰到不同触发器时克隆出不同的物体,并执行相应的操作,比如添加分数或者销毁物体等。

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

public class CollisionManager : MonoBehaviour
{
    //触发检测  1.克隆金币 2.恐克隆怪物  3.碰撞金币 吃掉它 加分 4.碰到怪物,掉血 5碰到加速带加速、减速
    //该触发检测脚本挂到 主角身上

    GameObject BeiTriggOBJ;
    public GameObject CoinMuban;
    public GameObject CloneCoinFather;

    public GameObject ObstuctionMuban;
    public GameObject CloneStruFather;

    //PlayerCont onPlayshizhe=new PlayerCont();//实例化对象


    private void OnTriggerEnter(Collider other)
    {

        BeiTriggOBJ = other.transform.gameObject;
        if (BeiTriggOBJ.tag == "rCoinTrigger")
        {
            //克隆金币
            ClonCoin();
        }
        if (BeiTriggOBJ.tag == "MonsterTrigger")
        {
            //克隆怪物
        }
        if (BeiTriggOBJ.tag == "TriggerSpeedUp")
        {
            //开始加速
            SpeedUp(10f);
        }

        //===================================
        if (BeiTriggOBJ.tag == "Coin")
        {
            //吃掉 加分
            Destroy(BeiTriggOBJ);
        }
        if (BeiTriggOBJ.tag == "Monster")
        {
            //掉血 停下来
            //PlayerCont.RunSpeed = 0;
        }
    }

    private void OnTriggerExit(Collider other)
    {
        if (other.transform.gameObject.tag == "TriggerSpeedUp")
        {
            SpeedUp(-10f);
        }
    }

    void ClonCoin()
    {
        Debug.Log("克隆金币");

        for (int i = 0; i < 10; i++)
        {
            Vector3 OnClonPos = new Vector3(153 + Random.Range(0, 6), 0, BeiTriggOBJ.transform.position.z + 50f + i * 3);
            GameObject.Instantiate(CoinMuban, OnClonPos, Quaternion.identity, CloneCoinFather.transform);
        }
    }
    void ClonMonster()
    {
        Debug.Log("克隆怪物");

        Vector3 OnClonPos = new Vector3(153 + Random.Range(0, 6), 0, BeiTriggOBJ.transform.position.z + 50f);
        GameObject.Instantiate(ObstuctionMuban, OnClonPos, Quaternion.identity, CloneStruFather.transform);
    }
    void SpeedUp(float Speed)//函数形参用法
    {
        Debug.Log("加速");
        PlayerCont.RunSpeed += Speed;
    }


}//end class
  1. 当主角碰到带有“TriggerCoin01”标签的触发器时,会触发脚本中的OnTriggerEnter()函数,开始克隆金币。在这个过程中,首先定义了一个新位置clonePos,然后使用GameObject.Instantiate()函数在clonePos位置上克隆出多个金币对象,并将它们设为CoinMuban模板对象的子级节点。
  2. 当主角碰到带有“TriggerStru”标签的触发器时,会触发脚本中的OnTriggerEnter()函数,开始克隆障碍物。在这个过程中,只是输出了一条消息,表示开始克隆障碍物,但实际上并没有做任何实际的操作。
  3. 当主角碰到带有“Coin”标签的物体时,会触发脚本中的OnTriggerEnter()函数,开始加分。在这个过程中,只会输出一条消息,表示开始加分,然后销毁触发碰撞的对象。
  4. 当主角碰到带有“Monster”标签的物体时,会触发脚本中的OnTriggerEnter()函数,开始扣分。在这个过程中,也只会输出一条消息,表示开始扣分。

【下周补充剩余部分】

脚本三 计分和掉血系统

改脚本也需要挂在到一个游戏物体,逻辑是:当主角的触发检测,检测到金币时,就跨类调用下面分数管理脚本的加分方法!同样掉血也一样!文章来源地址https://www.toymoban.com/news/detail-768035.html

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

public class ScoreManager : MonoBehaviour
{
    //分数管理 血量管理
    // 如果撞击到金币就加分,如果撞击到障碍物就掉血

    public int CurrentScore=0;
    public  int CurrentBlood = 10000;


    public void ScoreAdd()//构造函数
    {
        Debug.Log("加分函数开始执行");
        CurrentScore += 10;
        Debug.Log("分:"+CurrentScore);
    }


    public void SubBlood()//构造函数
    {
        Debug.Log("掉血函数开始执行");
        CurrentBlood -= 100;
        Debug.Log("血:" + CurrentBlood);
    }
    private void OnGUI()
    {     
        GUI.Label(new Rect(new Vector2(200, 200), new Vector2(500, 500)), CurrentBlood.ToString());
        GUI.Label(new Rect(new Vector2(20, 20), new Vector2(500, 500)), CurrentScore.ToString());

    }

}

到了这里,关于Unity 简单跑酷游戏策划与实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Unity3D 游戏服务器怎么实现热更新详解

    Unity3D是一款强大的游戏开发引擎,它不仅可以用于游戏客户端的开发,还可以用于游戏服务器的搭建。在游戏开发过程中,热更新是一项非常重要的功能,它可以使游戏在不重新启动的情况下,更新游戏内容,修复bug,提高游戏体验。本文将详细介绍Unity3D游戏服务器如何实

    2024年01月16日
    浏览(9)
  • 【Unity3D游戏魔坦之争】敌方逻辑封装实现【六】

    【Unity3D游戏魔坦之争】敌方逻辑封装实现【六】

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unityUI专题篇 🅰️ 😶‍🌫️:步骤实现 1.炮台的行为逻辑封装:旋转,触发检测,发射炮弹及特效 2.检测玩家后自动瞄准攻击 3.玩家扣

    2024年02月11日
    浏览(13)
  • Unity3D 如何把全部游戏逻辑都放到lua层实现详解

    Unity3D是一款非常流行的游戏开发引擎,它支持C#、JavaScript和Boo等脚本语言。然而,有时候我们可能希望将全部游戏逻辑都放到Lua层实现,这样可以更方便地进行游戏逻辑的修改和调试。本文将详细介绍如何使用Unity3D将全部游戏逻辑都放到Lua层实现。 对啦!这里有个游戏开发

    2024年01月16日
    浏览(12)
  • 【毕业论文】| 基于Unity3D引擎的冒险游戏的设计与实现

    【毕业论文】| 基于Unity3D引擎的冒险游戏的设计与实现

    📢博客主页:肩匣与橘 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 肩匣与橘 编写,首发于 CSDN 🙉 📢生活依旧是美好而又温柔的,你也是✨  基于Unity3D引擎的冒险游戏的设计与实现 📢前言 摘要 Abstract 1 绪论 1.1 选题背景 1.2 研究目的及意义 2 开发工具

    2024年02月05日
    浏览(16)
  • Unity3D教程:触发器实现简单的场景跳转

    Unity3D教程:触发器实现简单的场景跳转

    首先,需确保有一个想要跳转的目标场景。在本案例中,目标场景是ending。 第一步:创建一个碰撞体,放置在需要的触发场景跳转的位置。 第二步:删除多余的脚本,并且新建自己的脚本: 第三

    2024年02月12日
    浏览(14)
  • 【Unity】教你如何使用Unity制作一个简单的跑酷游戏

    【Unity】教你如何使用Unity制作一个简单的跑酷游戏

    其实用Unity制作游戏并不难,如果你想学习,那我就建议你想从制作一个简单的跑酷游戏来找到兴趣,因为如果你一开始就一直学习一些没什么必要的语法,这样就会让你一开始就失去了信心,失去了学习Unity的动力,所以如果你先学习如何制作一个简单的跑酷地图,然后你就

    2024年02月21日
    浏览(7)
  • Unity读书系列《Unity3D游戏开发》——脚本(一)

    Unity读书系列《Unity3D游戏开发》——脚本(一)

    脚本在Unity的重要程度不用多说,她是大部分软件的核心组件。 我们将在此篇文章学习脚本模版及其拓展、脚本的生命周期、脚本的执行顺序、脚本序列化,下一篇为脚本编译与调试。 如下图我们可以在Project视图右键进行脚本创建,除了C#脚本,还有两类脚本;Testing用来做

    2024年04月28日
    浏览(44)
  • Unity3d C# 开发微信小游戏分享图片、朋友圈等功能实现(含源码)

    Unity3d C# 开发微信小游戏分享图片、朋友圈等功能实现(含源码)

    通过一段时间的基于minigame-unity-webgl-transform插件的开发,算是稍微完整的一小个游戏已经制作完成,具体大家可以扫码体验一下: 感谢支持!! 之前编写了一篇u3d转微信小游戏开发教程的博客,虽然这个公测插件还有很多问题,我个人也在一直使用中。开发一个游戏后,最佳

    2023年04月10日
    浏览(11)
  • Unity读书系列《Unity3D游戏开发》——基础知识

    Unity读书系列《Unity3D游戏开发》——基础知识

    本篇对应标题书籍的第一章基础知识,也就是unity的基本常识和工作流的说明。 Unity目前用于创建2D和3D游戏、模拟应用程序、可视化体验以及其他虚拟现实(VR)和增强现实(AR)应用,游戏工业两开花。 Unity初版是在2005年发布的,开始时用unity3.X、4.X这样的名称进行版本更新

    2024年01月18日
    浏览(43)
  • 教你如何使用Unity制作一个简单的跑酷游戏

    教你如何使用Unity制作一个简单的跑酷游戏

    其实用Unity制作游戏并不难,如果你想学习,那我就建议你想从制作一个简单的跑酷游戏来找到兴趣,因为如果你一开始就一直学习一些没什么必要的语法,这样就会让你一开始就失去了信心,失去了学习Unity的动力,所以如果你先学习如何制作一个简单的跑酷地图,然后你就

    2024年02月04日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包