用unity制作简单的太空游戏(1):简单飞船控制
最近沉迷《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大法好)
指令式控制,完全通过点击相应的指令,飞船自主移动,这种模式就是将飞船操控的感觉完全去除,交给飞船自主姿态控制,极大的简化了玩家操作难度,适用于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):简单飞船控制相关推荐
- unity ui框架_用unity制作简单的太空游戏(2)-简单炮台
多铆蒸刚,炮塔至大! 亿万星辰,亿万炮塔! 多铆蒸刚,炮塔至上! 亿万炮塔,亿万荣光! (PS:我没有咕咕咕,就是比较惨,一口气出了半个月的差,人瘦了,也黑了,心塞塞--赶紧写个文章压压惊--) 这一 ...
- 【抖音小游戏】 Unity制作抖音小游戏方案 最新完整详细教程来袭【持续更新】
前言 [抖音小游戏] Unity制作抖音小游戏方案 最新完整详细教程来袭[持续更新] 一.相关准备工作 1.1 用到的相关网址 1.2 注册字节开发者后台账号 二.相关集成工作 2.1 下载需要的集成 ...
- Unity制作2D动作平台游戏视频教程
Metroidvania工具包:打造统一的2D行动平台 流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确 ...
- 开源推荐:一款用 Unity 制作的联机赛车游戏
[公众号回复 "1024",免费领取程序员赚钱实操经验] 大家好,我是章鱼猫. 今天给大家推荐的这个开源项目,我感觉是一个非常好的学习开发游戏的开源项目,如果你想学习游戏是如何开发 ...
- Unity制作第三人称射击游戏-成为创新游戏开发者学习教程
用Unity游戏引擎学习和制作第三人称射击游戏-成为创新游戏开发者- TPS战地克隆 你会学到什么 Unity 3D游戏开发 如何打造TPP第三人称射击游戏 第三人控制者 第三人称动画 第三人运动控制 ...
- Unity制作类胡闹厨房游戏 KitchenChaos 笔记整理
本文章是油管上CodeMonkey的一个unity项目KitchenChaos的笔记整理,学习并整理这个项目主要是因为终于看到了一个比较完整地用到了unity的各种功能.风格较为清爽的.代码结构清晰的 ...
- unity ui插件_用Unity制作GalGame/视觉小说游戏的模型素材与插件推荐
本文推荐一些用于开发GalGame或者视觉小说(Visual Novel)游戏的音频素材.Unity插件.3D模型.动作动画和2D素材. 一:音频资源 Cute Romantic Music Pack ...
- pygame简单的俄罗斯方块游戏和简单的打字游戏
1.pygame简单的俄罗斯方块游戏 一.对战的方块管理 定义一个BlockManage管理对战的方块 根据BlockManage根据传入的玩家id返回方块,保证每个玩家拿到的方块序列是一致的,所以在 ...
- Unity中FPS类小游戏的简单制作
1.摄像机放Player上,射线机代码 using UnityEngine; using System.Collections;public class Camera : MonoBehaviour ...
最新文章
- 第九天:基础文件管理
- fasta和fastq格式文件的shell小练习 http://www.bio-info-trainee.com/3575.html
- CCS中如何新建Platform以及调用
- C++实现字符串和整数之间的相互转换
- 每次都觉得很神奇的JS
- icmp的回送和回送响应消息_领导送我1盒茶叶,我悟出了3点道理,可能还有一群人不明白...
- Pinterest:Android系统上的视频管理
- docker 安装 mysql和Navicat Premium 远程连接
- HTTP协议详解(文档)
- 大数据人工智能物联网论文_物联网学报“大数据”相关论文汇总
- 计算机专业的描述,计算机专业描述怎么写
- 2022最新版sci和ssci双检索期刊,详细期刊目录值得了解!
- 黑魂3无法从服务器获取信息,黑魂3怎么读取信息 | 手游网游页游攻略大全
- 360智能摄像机:超市防盗安全员
- linux 本地项目文件挂载到虚拟机上面,不用在本地编辑后再上传到虚拟机上,实现高效率开发
- VoLTE、VoWiFi和VoIP有什么不同?
- Week of 3.21
- Debian Apache完整
- oracle 数据库如何建立索引 如何用索引?
- Hack The Box——Traceback
热门文章
- 人生苦短我学python表情包_Python自动生成表情包
- openoffice java在线预览,使用openoffice和kkFileView实现文档在线预览
- 华中数控机器人编程循环三次_数控机床固定循环编程(G80~G84)详解
- Backpropagation 总结
- 单元测试unittest(基于数据驱动的框架:unittest+HTMLTestRunner/BeautifulReport+yaml+ddt)...
- 熔断器---Hystrix
- PREV-3_蓝桥杯_带分数
- Django - Python3 常用命令
- BZOJ 1609 Usaco Eating Together
- 【OpenCV开发】使用OpenCV的OpenCL(ocl)模块