最近沉迷《Dreadnought》(中文名:无畏战舰,B站CG链接),回想起作为十余年EVE老油条的太空生涯,又萌生了做个太空游戏的情怀,所以这一次就讲讲怎么做个简单的太空飞船的小游戏好了。

因为不会美术(懒,当然这并不是重点...),所以求助assetstore好了,Free大法好

这里不得不提下CGPitbull这家资源商,发布了很多不错的科幻载具,虽然不是很喜欢这种风格的涂装,不过已经是商店里少有的全系列高质量资源了,赞一个。

然后我们把下好的飞船资源丢到unity里,记得搞个天空盒哟:

怎样,是不是很帅,瞧这质感,口水……

然后来实现飞船的控制,首先看下图,物体在三维空间里的移动有上下左右前后三个轴向的位移和旋转:

现实里的飞船控制当然是非常复杂的,作为游戏来说完全仿真肯定是不行的,需要根据游戏玩法进行简化,根据作者玩过的游戏,有以下几种操控类型:

固定翼飞机式控制,鼠标控制Pitch和Yaw进行视角旋转和目标锁定,键盘控制Roll等,也是最为常见的3D飞行射击控制方式,参考类型有《无人深空》《精英危险》《浴火银河》等。此种模式的特点在于鼠标同时控制了视角和航向,便于感受飞行追逐射击的快感,在PC端由于鼠标的特性可以很容易上手,但在移动端控制的时候需要相应的辅助瞄准(也是移动端FPS类特有的问题),由于此类玩家通常热衷于飞行追逐,所以使用载具大都为战机等灵活机型。

因麦曼机动,操控时需要鼠标向上拉角度,然后翻滚

飞艇式控制,完全由键盘控制移动和旋转,多用于直升机,飞艇,大型飞船类,参考游戏有《Dreadnought》《Kerbal Space Program》等。有别于第一种模式,完全采用键位控制的飞船可以轻易实现在3个轴向上的旋转和移动,也是最为接近于真实飞船移动的方式,但真实的不一定是最好的,同时控制位移和旋转对操作要求大大提升,而且很难做出相应的机动,所以一般会对这种模式进行简化,如《Dreadnought》中,就将WS作为前后移动,AD作为Yaw旋转,Shift和Space作为上下移动,取消了Pitch和Roll控制,从而在保留的较多的操控感的同时简化了操作。反观《Kerbal Space Program》作为硬核航天模拟游戏采用完全真实模拟控制,在操作的时候极为困难,需要经过多次练习才能掌握(对接的坑啊……MJ大法好)

KSP中模拟飞船对接

指令式控制,完全通过点击相应的指令,飞船自主移动,这种模式就是将飞船操控的感觉完全去除,交给飞船自主姿态控制,极大的简化了玩家操作难度,适用于MMO类型的太空游戏。比如一切全靠右键点菜单的《EVE》,值得一提的是后期EVE加入了键位控制,但由于游戏模式本身的问题,操作还不如不操作。

网易你倒是赶紧开服让我进去截个图啊!!!

游戏作为一个箱笼,一个沉浸式的交互体验场景,玩家的操作输入和游戏的反馈输出至关重要,对于操控模式的选择,需要在一开始的时候就根据游戏的核心玩法来决定。此时此景,由于作者君沉迷《Dreadnought》,当然是选择抄他一波啦……

首先在unity里制作这样的一个场景,注意一点这里我把飞船模型放到了控制器下的Avatar子对象下,这样可以在控制器处理位移的时候对飞船进行一些其他的操作。

然后编写控制脚本:

这里先用最简单的方式实现基本的效果,通过Rotate和Translate实现了最简单的操作,UpDown是在Input中添加的轴向操作,参考Horizontal设置,键位改为shift和空格键就行。avatar部分是为了模拟Roll和Pitch旋转,提升表现力。效果如下:

可以看到基本的效果已经出来了。当然,此处只是粗略的模拟,还有很多坑等着填,比如飞船操控的阻尼感,现在开起来就像纸片,飞船位移的碰撞处理,引擎的效果,等等,接下来我们一一来填。

首先改用物理的方式来移动,作者一开始为了真实模拟飞船采用了Rigidbody.AddForce的方式来做,好处是可以比较真实的模拟飞船的力,然后就掉坑里了,各种受力点,物理材质,力矩调整,十分的麻烦,嘛……又不是做真实模拟,所以后来直接改Rigidbody.MovePosition好了,加速和减速分别用了两个值,因为减速度很可能高于加速度,核心代码如下:

然后将面板参数调整到合适的手感:

这样就得到了进一步改进的飞船控制,手机靓号买卖手感已经接近于《Dreadnought》的操控,顺带我还抠了个引擎火焰效果放上去,根据操作进行反馈,下面是最终效果:

简单的AI控制

由于只要提供三轴的控制,我们可以很容易的实现飞船的AI,这里我简单写了个判别逻辑计算输入的三轴,然后在fixedupdate中调用OnMove方法:

这里是跟随的效果,还凑合。

以上就是本篇飞船控制的内容,由于篇幅有限,不再对更复杂的飞船控制展开讲解,大家可以去玩玩KSP进行亲身体验XD,下一篇讲下常见的飞船武器,大舰就要配巨炮,亿万炮塔,亿万荣光!

用unity制作简单的太空游戏(1):简单飞船控制相关推荐

  1. unity ui框架_用unity制作简单的太空游戏(2)-简单炮台

    多铆蒸刚,炮塔至大! 亿万星辰,亿万炮塔! 多铆蒸刚,炮塔至上! 亿万炮塔,亿万荣光! (PS:我没有咕咕咕,就是比较惨,一口气出了半个月的差,人瘦了,也黑了,心塞塞--赶紧写个文章压压惊--) 这一 ...

  2. 【抖音小游戏】 Unity制作抖音小游戏方案 最新完整详细教程来袭【持续更新】

    前言 [抖音小游戏] Unity制作抖音小游戏方案 最新完整详细教程来袭[持续更新] 一.相关准备工作 1.1 用到的相关网址 1.2 注册字节开发者后台账号 二.相关集成工作 2.1 下载需要的集成 ...

  3. Unity制作2D动作平台游戏视频教程

    Metroidvania工具包:打造统一的2D行动平台 流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确 ...

  4. 开源推荐:一款用 Unity 制作的联机赛车游戏

    [公众号回复 "1024",免费领取程序员赚钱实操经验] 大家好,我是章鱼猫. 今天给大家推荐的这个开源项目,我感觉是一个非常好的学习开发游戏的开源项目,如果你想学习游戏是如何开发 ...

  5. Unity制作第三人称射击游戏-成为创新游戏开发者学习教程

    用Unity游戏引擎学习和制作第三人称射击游戏-成为创新游戏开发者- TPS战地克隆 你会学到什么 Unity 3D游戏开发 如何打造TPP第三人称射击游戏 第三人控制者 第三人称动画 第三人运动控制 ...

  6. Unity制作类胡闹厨房游戏 KitchenChaos 笔记整理

    本文章是油管上CodeMonkey的一个unity项目KitchenChaos的笔记整理,学习并整理这个项目主要是因为终于看到了一个比较完整地用到了unity的各种功能.风格较为清爽的.代码结构清晰的 ...

  7. unity ui插件_用Unity制作GalGame/视觉小说游戏的模型素材与插件推荐

    本文推荐一些用于开发GalGame或者视觉小说(Visual Novel)游戏的音频素材.Unity插件.3D模型.动作动画和2D素材. 一:音频资源 Cute Romantic Music Pack ...

  8. pygame简单的俄罗斯方块游戏和简单的打字游戏

    1.pygame简单的俄罗斯方块游戏 一.对战的方块管理 定义一个BlockManage管理对战的方块 根据BlockManage根据传入的玩家id返回方块,保证每个玩家拿到的方块序列是一致的,所以在 ...

  9. Unity中FPS类小游戏的简单制作

    1.摄像机放Player上,射线机代码 using UnityEngine; using System.Collections;public class Camera : MonoBehaviour ...

最新文章

  1. 第九天:基础文件管理
  2. fasta和fastq格式文件的shell小练习 http://www.bio-info-trainee.com/3575.html
  3. CCS中如何新建Platform以及调用
  4. C++实现字符串和整数之间的相互转换
  5. 每次都觉得很神奇的JS
  6. icmp的回送和回送响应消息_领导送我1盒茶叶,我悟出了3点道理,可能还有一群人不明白...
  7. Pinterest:Android系统上的视频管理
  8. docker 安装 mysql和Navicat Premium 远程连接
  9. HTTP协议详解(文档)
  10. 大数据人工智能物联网论文_物联网学报“大数据”相关论文汇总
  11. 计算机专业的描述,计算机专业描述怎么写
  12. 2022最新版sci和ssci双检索期刊,详细期刊目录值得了解!
  13. 黑魂3无法从服务器获取信息,黑魂3怎么读取信息 | 手游网游页游攻略大全
  14. 360智能摄像机:超市防盗安全员
  15. linux 本地项目文件挂载到虚拟机上面,不用在本地编辑后再上传到虚拟机上,实现高效率开发
  16. VoLTE、VoWiFi和VoIP有什么不同?
  17. Week of 3.21
  18. Debian Apache完整
  19. oracle 数据库如何建立索引 如何用索引?
  20. Hack The Box——Traceback

热门文章

  1. 人生苦短我学python表情包_Python自动生成表情包
  2. openoffice java在线预览,使用openoffice和kkFileView实现文档在线预览
  3. 华中数控机器人编程循环三次_数控机床固定循环编程(G80~G84)详解
  4. Backpropagation 总结
  5. 单元测试unittest(基于数据驱动的框架:unittest+HTMLTestRunner/BeautifulReport+yaml+ddt)...
  6. 熔断器---Hystrix
  7. PREV-3_蓝桥杯_带分数
  8. Django - Python3 常用命令
  9. BZOJ 1609 Usaco Eating Together
  10. 【OpenCV开发】使用OpenCV的OpenCL(ocl)模块