Unity射击实例讲解—主角创建
前言:
经过三分钟的思考决定换个标题,这两天其实游戏制作进度推了大半了,加入了许多自我创作的素材,不过想一想用来讲解的实例不该这么花哨,决定还是参照我的一些教材做一些简单的示例不然要说的东西太多,本人学艺不精尚不能把用到的每个版块讲清楚,这篇内容就是创建一个游戏模型并让它有攻击的能力顺便补上之前没说的摄像机与灯光,同时讲解会放前面,实际操作放后面,一些类似的操作就不一步步展示了。自我发挥创作的要素在游戏大体完成后逐步介绍给大家,我会另开一个项目文件用来讲解用,之前那个被塞了太多东西了。
射击类游戏实例
作为第一个用来发布讲解的游戏,我立马就想到了射击类游戏,当然不是第一人称射击的那种,是打小飞机累计得分的那种类型,方便魔改参数以及自行制作一些敌人的模型。
游戏相关设定:
1.在游戏中,我们将操作战舰击坠敌人的飞船,游戏开始后战舰会向前推进,消灭敌人取得分数,战舰被击落游戏才会结束。
2.战舰拥有固定装甲(血量),敌人有多种并拥有独特的飞行轨迹与装甲
3.屏幕上会显示血量、得分等内容
4.待添加
涉及的英文(含括上一篇,有错误烦请指正,):
Assets:资源 Import New Assets :导入新资源 Project:工程 Show in Explorer:在资源管理器中显示 Create:创建 Folder:文件夹 File:文件 New Scene:新场景 Save Scene As:场景另存为
GameObjct:游戏对象 Plane:平面体 Material:材料 Background:背景 Inspector:检查工具 Element:元素 Rendering Mode:渲染模式 Shader:着色器 Texture:纹理 Animator Controller:动画控制器
Clip:剪辑 Add Property:添加属性 Camera:摄像机 Point Light:点光源 Align With View:与视角对齐 Range:范围 Hierarchy:层级 Script:脚本 Component:组件 Transform:变化改变
摄像机
摄像机是用来展示游戏世界的窗口,游戏引擎在运算过程中,根据摄像机视角进行裁切,将3D模型顶点位置投射到摄像机的矩阵平面内,再进行坐标转换将顶点位置最终投射到屏幕的像素坐标上(无论3d或者2d,我们显示器都为二维平面),在Unity场景中允许存在多个摄像机也就是说可以切换视角,实际上摄像机就是一个游戏体,可以移动、旋转、用脚本控制等。
在这个太空游戏中,我们只需要视角从上向下展望就行,我后续添加了另外的视角不过下面就暂时不放出来了。
选中摄像机(main camera)—【GameObject】—【Align With View】可以让视角与现在对齐。
对于相机视角操作有多种,我的做法是滑轮(拉远拉近)、按下滑轮(平移)、按住鼠标右键(转换角度)三个方面大体调试范围,用键盘的上下左右微调视角。
篇幅问题就不展示截图了,自己动手试一试一下就能明白,多视角创建使用会放后面具体说。
灯光
【Windows】—【Rendering】—【Lighting Settings】,选择Ambient Source,将Skybox改为color,这样会使用颜色作为环境光代替默认天空盒,会解决SceneheGame场景中亮度不一致的问题。
【GameObject】—【Light】—【Point Light】,创建一个点光源,Range改变影响范围,Intensity改变灯光强度,让画面更美观些。(为了直观显示变化亮度调高了点)
主角创建
到本游戏的主要环节之一了,这里开始就能发挥一下自我的想法,而不是在软件操作上点来点去,先介绍基本的,冲冲冲。
部分组件讲解:
Input是一个静态类,封装了所有输入功能,包括键盘、鼠标或触控操作,在这里我响应了不同的按键功能,当然还有另外的输入方式可以使代码支持跨平台运行。
Time.deltaTime表示每帧的经过时间,所有动画效果都需要乘上Time.deltaTime,比如在示例中,速度*Time.deltaTime,表示每帧移动N个单位距离。
this.transform调用的是游戏体的Transform,Transform组件提供的主要功能都是和移动、旋转、缩放游戏体有关。我们调用Translate函数移动游戏体,并输入Vector3类型参数,用来表示x、y、z三个方向上的移动距离。移动的方向与美术素材方向有关,建议导出素材时模型正方向朝向Z轴。
Vector3是一个值类型的结构,表示向量,即某个位置或方向。用于坐标位置时好理解,用于方向时就是表示在某方向上偏离一定距离,Translate函数实现的功能就是普通的加减法。
具体步骤:
1.将准备好的主角素材拖入【Hierachy】窗口,我就用的简朴的飞机模型。
2.右键【Assets】—【Create】—【Folder】创建一个名为Scripts的文件夹,用于存放各种编写的脚本。
3.选中Scripts文件,右键—【Create】—【C# Script】,创建一个名为Player的脚本。
4.【Component】—【Scripts】—【Player】,将脚本指定给主角游戏体作为组件
5. 点开Player脚本文件,编写代码
这里实现了主角的上下左右的移动
[AddComponentMenu("MyGame/Player")]这一段代码可以让脚本出现在MyGame中,方便管理脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine; [AddComponentMenu("MyGame/Player")] public class Player : MonoBehaviour
{
public float m_speed = 1;//加一个类控制速度 // Start is called before the first frame update
void Start()
{
Transform m_transform = this.transform;//修改点
} // Update is called once per frame
void Update()
{ float movev = 0;
float moveh = 0;
if (Input.GetKey(KeyCode.UpArrow))
{
movev += m_speed * Time.deltaTime;
} if (Input.GetKey(KeyCode.DownArrow))
{
movev -= m_speed * Time.deltaTime;
} if (Input.GetKey(KeyCode.LeftArrow))
{
moveh -= m_speed * Time.deltaTime;
} if (Input.GetKey(KeyCode.RightArrow))
{
moveh += m_speed * Time.deltaTime;
}
this.transform.Translate(new Vector3(moveh, 0, movev));
}
}
6.调整合适移动速度
总结:
现在运行游戏,游戏体就能有可用的移动了,第六步中的speed速度修改会直接改变代码中m_speed的值,直接在层级中修改就不用去原代码修改了,接下来的子弹创建、敌人定义等就能上手到熟悉的编程环节了,对了,虽然只定义了四个方向的移动,实际操作时是可以实现斜方向就是多个按键同时作用的效果的,我自己定义的另一款还涉及到了瞬移等操作,一步步来吧,先基础点的好。下一篇应该就是子弹模型创建与发射相关了。
各位大佬,都看到这了,不点个关注推荐再走嘛。
Unity射击实例讲解—主角创建的更多相关文章
- Unity射击实例讲解—子弹创建
前言: 这一篇章会介绍如何创建最基本的射击用子弹,示例用工程进度也往后推了许多,有时间会都整理了发出来,学艺尚浅有一些东西不能讲明白,后续学习深入会慢慢补足.另外自己魔改过的版本也是花钱买了一些模型, ...
- yii2.0增删改查实例讲解
yii2.0增删改查实例讲解一.创建数据库文件. 创建表 CREATE TABLE `resource` ( `id` int(10) NOT NULL AUTO_INCREMENT, `textur ...
- 实例讲解Linux系统中硬链接与软链接的创建
导读 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接.硬链接与软链接的区别从根本上要从Inode节点说 ...
- (转)使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解
使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解 本文用代码简单介绍cjson的使用方法,1)创建json,从json中获取数据.2)创建json数组和解析json数组 1. 创 ...
- 学习《Oracle PL/SQL 实例讲解 原书第5版》----创建账户
通过readme.pdf创建student账户. 以下用sys账户登录时都是sysdba. 一.PL/SQL 登录oracle. SYS/123 AS SYSDBA 账户名:sys:密码:123:作 ...
- 源于《Unity官方实例教程 “Space Shooter”》思路分析及相应扩展
教程来源于:Unity官方实例教程 Space Shooter(一)-(五) http://www.jianshu.com/p/8cc3a2109d3b 一.经验总结 教程中步骤清晰,并且 ...
- 实例讲解Oracle数据库设置默认表空间问题
实例讲解Oracle数据库设置默认表空间问题 实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在O ...
- makefile基础实例讲解 分类: C/C++ 2015-03-16 10:11 66人阅读 评论(0) 收藏
一.makefile简介 定义:makefile定义了软件开发过程中,项目工程编译链.接接的方法和规则. 产生:由IDE自动生成或者开发者手动书写. 作用:Unix(MAC OS.Solars)和Li ...
- 对《[Unity官方实例教程 秘密行动] Unity官方教程《秘密行动》(十二) 角色移动》的一些笔记和个人补充,解决角色在地形上移动时穿透问题。
这里素材全是网上找的. 教程看这里: [Unity官方实例教程 秘密行动] Unity官方教程<秘密行动>(九) 角色初始设定 一.模型设置: 1.首先设置模型的动作无限循环. 不设置的话 ...
随机推荐
- mimikatz使用
mimikatz使用 需要用管理员权限打开 privilege::debug sekurlsa::logonpasswords 已测试系统 Windows Server 2008 R2 Datacen ...
- 匹配p后面不是h的单词
$string = 'python perl pear php'; // 获取p后面不是h的单词 $preg = '/\bp(?!h)[a-z]+\b/'; $status = preg_match_ ...
- C#实现SM2国密加密
本文主要讲解"国密加密算法"SM系列的C#实现方法,不涉及具体的算法剖析,在网络上找到的java实现方法比较少,切在跨语言加密解密上会存在一些问题,所以整理此文志之.JAVA实现参 ...
- kail下安装RsaCtfTool
最近做了一些RSA的ctf题目,感觉在RsaCtfTool是很麻烦的事,但是发现在kali上安装下载非常简便,所以找一了一些教程,总结一下 参考链接:http://www.sohu.com/a/257 ...
- pdfFactory如何设置限制打印和浏览文档权限
当我们进行私密文件的分享时,除了要设置密码保护文件内容外,还要注意设置打印限制,防止他人利用打印的方式,进行纸质文件的传播. 在使用pdfFactory安全策略时,我们可以通过设定禁止打印的方式,完全 ...
- 思维导图MindManager有新手引导功能吗
无论是对于初次使用Mindmanager思维导图软件的新手来说,还是对于有一定软件使用基础的进阶者来说,Mindmanager思维导图软件的帮助功能都能给予用户很大的指导作用. Mindmanager ...
- guitar pro系列教程(二十五):Guitar Pro教程之组织小节
上一章节我们讲述了关于Guitar Pro 7的主界面的相关功能的介绍,对于初学作曲,又是吉他的初学者,刚刚接触Guitar Pro时,很多的功能,符号,工具都市不熟悉的,这样在创作,使用的过程中就会 ...
- guitar pro 系列教程(十):关于Guitar Pro声部的使用技巧
作为一个刚接触吉他的萌音乐的玩家,我们在创作吉他谱时一定要注意其中的声部搭配,因为各个声部的配器音色和旋律会对我们的曲子有着非常重要的影响,而声部的把控技术,也可以体现一个音乐人的能力水平的一方面.今 ...
- ubuntu安装php的 redis扩展
wget https://github.com/phpredis/phpredis/archive/2.2.4.tar.gztar -zxvf 2.2.4.tar.gz cd phpredis-2.2 ...
- windows安装redis扩展
Thread Safety enabled 打开phpinfo() 看php版本是ts还是nts, 如上是ts版本的,所以需要安装redis的ts版本, redis的扩展下载地址 https://p ...