做教程远比自己开发游戏要花时间...继续写小恐龙的游戏教程

环境搭建在这里

从零开始入门创作游戏——Unity3d的环境搭建_默哀d的博客-CSDN博客

素材导入和基本页面介绍在这里

从零开始入门创作游戏——Unity编辑器的使用_默哀d的博客-CSDN博客

接下来是编辑游戏对象的运动和交互逻辑脚本


  • 小恐龙的运动脚本

为了让小恐龙能根据按键进行运动,我们需要编写脚本来进行控制

在资产窗口中右键【新建】——【C#脚本】

注意:这里有几个坑

一、脚本会默认生成一部分的代码,而其中最重要的是第一个类名是与生成的脚本文件名一致的,如果后面改了脚本名字,这里也要记得改一下。

public class DinosaurSctrip : MonoBehaviour

二、如果代码没有自动补全的话,就是没有配置对应的解决方案(大概就是VS用来分析代码构成的东西),参考这个文档来安装

unity 打开vs没有解决方案_Unity使用VS Code编写C#代码没有代码补全怎么解决?_weixin_43514201的博客-CSDN博客_unity用vs写代码不会自动补全

接下来就是正式写代码了,我不会C#所以可能用词不太对,意思意思就好

首先是引用需要用到的类,加在void Start() 之前,其他的代码解释我都写在注释里了。

public class DinosaurScript : MonoBehaviour
{Rigidbody2D rb;//控制物体下落的组件public float jumpHeight;//创建公共变量 跳的高度// Start is called before the first frame updatevoid Start()//游戏启动时进行的配置{rb = GetComponent<Rigidbody2D>();//获取该组件}// Update is called once per framevoid Update()//游戏其中每一帧进行的判断{if (Input.GetKeyDown(KeyCode.Space))//如果空格键按下一次时{rb.velocity = new Vector2(0, jumpHeight);//给这个物体一个新的速度(x轴,y轴)}}}

保存后,回到unity 3d的页面,将脚本拖动到恐龙这个游戏对象中,右侧就会出现脚本配置,同时公共变量 jumpHeight 可以在这里随时修改,方便调整

可以在游戏运行的时候随时调整这两个参数,以获得自己最满意的参数

注意:这里又有一个坑,在游戏试运行的时候,调整完的参数并不会保存,一旦停止就会恢复原本的参数,所以调完自己记一下,停止运行后再修改和保存一次。

当然,这里有个明显的BUG,那就是连续按空格,小恐龙就会不停往上跳,所以需要添加一个参数限制连续跳动,然后在遇到地面后才能再次跳起。

完善后的代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class DinosaurScript : MonoBehaviour
{Rigidbody2D rb;//控制物体下落的组件public float jumpHeight;//跳的高度bool isJumping;//判断是否正在跳// Start is called before the first frame updatevoid Start(){rb = GetComponent<Rigidbody2D>();isJumping = false;//游戏开始时默认参数}// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.Space)&& isJumping == false)//只有满足按下空格同时能跳时才能跳起{rb.velocity = new Vector2(0, jumpHeight);isJumping = true;//一旦跳起了就变成不能跳了}}private void OnCollisionEnter2D(Collision2D collision)//Unity中判断任何碰撞的类{isJumping = false;//这里不严谨,只要发生任意刚体碰撞就能再次跳动,后面再完善}
}

然后再去测试游戏,发现小恐龙能只能跳一次了。


  • 场景的移动

为了让场景看起来是小恐龙移动,我们这次使用的是视角不动,而是背景移动。

跟上面一样,先创建脚本,然后是使用unity内置的位置函数和时间函数来对游戏对象的位置进行刷新。

public class Movement : MonoBehaviour
{public float movementSpeed;//移动速度// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){transform.position = new Vector2(transform.position.x - movementSpeed * Time.deltaTime, transform.position.y);/*这里个人感觉比较复杂游戏对象改变后的位置 = 原本的x轴位置 减 移动速度×增量时间,y轴不变,这样的效果就是对象向左水平平移*/}
}

写好脚本后,同样可以添加到对应的游戏对象中,如果保持整个游戏背景对象的移动速度是一样的,可以直接将脚本添加在父对象上(红色箭头)。如果想要个别对象移动快一点,可以添加在子对象中(绿色箭头),修改一下不同的速度参数就可以了

但是上面这样移动会一直移动到超出镜头范围,为了让背景对象会自动重置,接下来需要添加两个参数,消失点和再生点

public class Movement : MonoBehaviour
{public float movementSpeed;//移动速度public float startPosition;//消失点public float endPosition;//再生点// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){transform.position = new Vector2(transform.position.x - movementSpeed * Time.deltaTime, transform.position.y);if (transform.position.x <= endPosition)//如果更新后的x坐标小于等于消失点{transform.position = new Vector2(startPosition, transform.position.y);//那么这个对象的x轴坐标就重置为再生点坐标}}
}

消失点和再生点的值可以直接将游戏对象移动到镜头外,然后看其x轴坐标来设定,因为游戏分辨率问题,最好还是设置远一点,不然可能会在分辨率大的设备中,对象直接在镜头内消失和再生。

而地面,为了保证其连续性,需要创建2~3个地板对象,当其中一个离开摄像头后,就在摄像头以外的地方再生。

有个小问题:地板交替再生时,中间的缝可能会不停变大然后变得不连贯,这个可以通过覆盖一部分地面来解决这个问题(不知道为啥我还是会出现这个问题)

这样就完成了基本操作和场景运动了,后面再写碰撞交互和UI展示

从零开始入门创作游戏——游戏对象的脚本编辑相关推荐

  1. 从零开始入门创作游戏——对象交互与UI展示

    做教程远比自己开发游戏要花时间...继续写小恐龙的游戏教程 环境搭建在这里 从零开始入门创作游戏--Unity3d的环境搭建_默哀d的博客-CSDN博客 素材导入和基本页面介绍在这里 从零开始入门创作 ...

  2. 从零开始入门创作游戏——2D沙盘类随机地图的生成

    如果想做类似于泰拉瑞亚的沙盘游戏,首先需要生成随机的地图. 定义世界大小 首先需要确定地图大小和砖块元素 1.地图所需基本参数 因为只有第一次开始时会生成地图,所以可以删除update函数 publi ...

  3. 从零开始入门创作游戏——Unity3d的环境搭建

    最近自己被裁了,闲着没事就跟朋友讨论说试一试做一下游戏(每个男人心里都有过的幻想),就此记录一下自己从零基础开始做第一个超简单的游戏. 入门的门,搭建环境 这就是我入门第一个坑. 首先进入下面的官网 ...

  4. 游戏开发入门(四)逻辑与脚本开发

    视频链接:游戏开发入门(四)逻辑与脚本开发(8节课 时常:约2小时30分钟 第4节看不了) 笔记与总结(请先学习视频内容): 1.逻辑系统目的 实现策划的设计文档 构建游戏玩法 实现程序与玩家交互 2 ...

  5. [Unity C#教程] 游戏对象和脚本

    文章转载自:https://www.cnblogs.com/UnityYork/p/7704803.html [Unity C#教程] 游戏对象和脚本 博主最近在学习Unity,发现一个英文教程很好. ...

  6. 【愚公系列】2022年02月 U3D全栈班 012-Unity游戏对象和脚本

    文章目录 一.Unity的对象与脚本关系 1.认知熟悉Unity中的对象 2.脚本的认知与使用 二.Unity的对象 1.GameObject游戏对象 2.Component组件对象 三.Unity中 ...

  7. Unity 从零开始的2D游戏开发 —— 角色移动脚本

    角色移动脚本是一个游戏最基础的脚本,通常也是改动最多的脚本,因此在后期会变得异常臃肿,不过这不是我们讨论的问题,本文主要说明角色移动脚本的设计和一些区别. 1.通过控制角色的Transform来移动角 ...

  8. C#开发Unity游戏教程之使用脚本变量

    C#开发Unity游戏教程之使用脚本变量 使用脚本变量 本章前面说了那么多关于变量的知识,那么在脚本中要如何编写关于变量的代码,有规章可循吗?答案是有的.本节会依次讲解变量的声明.初始化.赋值和运算. ...

  9. 贪吃蛇的使命之零基础入门贪吃蛇游戏(附演示地址)

    作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白 公众号: [C you again],分享计算机类毕业设计源码.IT技术文章.游戏源码.网页模板.程序人生等等.公众号回复 ...

最新文章

  1. 没有文档,没有老员工讲解,悲催的新人如何快速熟悉一个新项目?
  2. oracle 二进制运算符,Oracle UNION运算符
  3. 剑指offer面试题[9-3]-矩形覆盖
  4. 【数据结构与算法】完结
  5. 如何移除照片中不需要的东西?这三款Mac App软件不会让你失望!
  6. 服务器安全设置篇(珍藏补充版中)
  7. 笔记本功耗测试软件,笔记本功率一般多大 笔记本功率检测【图文】
  8. 豪赌激光电视,海信算是赢了吗?
  9. Mac 修改hosts文件
  10. python怎样开发软件_Python是怎么编写软件的?
  11. Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
  12. 阿里云PAI平台模型压缩技术落地淘宝直播双十一应用:一猜到底
  13. ValueError: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 144 from C
  14. java 写作速度_GMAT写作提高速度4条实用经验分享
  15. 金立创始人刘立荣:从南下淘金到身价15亿
  16. Unregistere
  17. matlab离散点范围外云图,matlab利用m_map工具包画中国地图及散点云图
  18. linux系统启动。
  19. 实战:在电子邮件中使用数字签名和加密
  20. 生成随机流水号(纯数字流水)【22位】

热门文章

  1. 阿里巴巴ICBU技术部招人啦
  2. 硅传公司的CC1310模块 Flash解锁和擦除CC1310无法正常擦除flash
  3. 美术集—素描画不准五官?素描中的五官为什么要单独练习?
  4. 怎么将手机录音文件在电脑上转换成mp3
  5. 数字书法授课软件怎么选择比较好?
  6. RAID合并两块固态硬盘大坑: 配置-SATA仿真-RAID与AHCI的区别
  7. python中if not x: 和 if x is not None: 和 if not x is None的使用和区别(这里面有一个坑)
  8. 使用ROS控制罗技F701游戏手柄
  9. 现代控制理论——状态转移矩阵
  10. (STM32)从零开始的RT-Thread之旅--SPI驱动ST7735(2)