Unity射击实例讲解—主角建立

前言:编程

通过三分钟的思考决定换个标题,这两天其实游戏制做进度推了大半了,加入了许多自我创做的素材,不过想想用来说解的实例不应这么花哨,决定仍是参照个人一些教材作一些简单的示例否则要说的东西太多,本人学艺不精尚不能把用到的每一个版块讲清楚,这篇内容就是建立一个游戏模型并让它有攻击的能力顺便补上以前没说的摄像机与灯光,同时讲解会放前面,实际操做放后面,一些相似的操做就不一步步展现了。自我发挥创做的要素在游戏大致完成后逐步介绍给你们,我会另开一个项目文件用来说解用,以前那个被塞了太多东西了。函数

 

射击类游戏实例工具

 

做为第一个用来发布讲解的游戏,我立马就想到了射击类游戏,固然不是第一人称射击的那种,是打小飞机累计得分的那种类型,方便魔改参数以及自行制做一些敌人的模型。动画

游戏相关设定:this

1.在游戏中,咱们将操做战舰击坠敌人的飞船,游戏开始后战舰会向前推动,消灭敌人取得分数,战舰被击落游戏才会结束。spa

2.战舰拥有固定装甲(血量),敌人有多种并拥有独特的飞行轨迹与装甲3d

3.屏幕上会显示血量、得分等内容调试

4.待添加code

 

涉及的英文(含括上一篇,有错误烦请指正,):orm

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的值,直接在层级中修改就不用去原代码修改了,接下来的子弹建立、敌人定义等就能上手到熟悉的编程环节了,对了,虽然只定义了四个方向的移动,实际操做时是能够实现斜方向就是多个按键同时做用的效果的,我本身定义的另外一款还涉及到了瞬移等操做,一步步来吧,先基础点的好。下一篇应该就是子弹模型建立与发射相关了。

 

各位大佬,都看到这了,不点个关注推荐再走嘛。

相关文章
相关标签/搜索