用Unity 怎么制作3D第一人称射击游戏。

用Unity 怎么制作3D第一人称射击游戏。,第1张

第一部分:简介

这个教程中,我们详细了解下如何制作一个简单的第一人称射击游戏(FPS)。其中将介绍一些基本的3D游戏编程的概念和一些关于怎样如游戏程序员般思考的技巧。

前提

这个教程假定你已经熟悉软件Unity基本 *** 作,掌握了基本的脚本概念。

创建新工程

下载FPS_Tutorialzip压缩文件,解压,在Unity中打开工程文件。

从Unity安装目录导入Standard Assets资源包。

导入工程后,你会在Unity工程面板中的“Standard Assets”文件夹下看见这些资源内容。当我们导入新资源时,最好安装按照资源功能对其分组,例如:火箭、爆炸、音频等。

设置游戏环境

导入资源后,你会注意到在工程面板中有许多文件夹。

工程面板中,从文件夹“Object/mainLevelMesh”中选择“mainLevelMesh”。

在参数面板,FBXImporter选项中,你会发现“Generate Colliders”选项,勾选此选项。如果不做这一步,游戏中玩家会穿越地面直接掉下深渊(实际是开启“碰撞”,产生交互)

把“mainLevelMesh”拖放到场景中。

场景中不需要添加灯光,这关全部场景已经全部应用了灯光贴图。整个场景对所有灯光进行了灯光贴图渲染,使用了“预烘焙阴影”。灯光贴图对显示效果有很大帮助,特别是复杂灯光环境。

下面可以在场景中添加一个角色了。

添加主要角色

下面在场景中增加一个可以 *** 控的角色物体。Unity针对第一人称射击游戏预置了许多内置的控制器,在工程面板Standard Assets->;Prefabs下。

添加第一人称控制器,点击工程面板Standard Assets旁边的小三角,d出资源列表。找到Prefabs文件夹,点击小三角形,d出资源列表。把“First person controller”拖到场景里。

这时场景中会出现一个代表玩家的圆柱体,三个大箭头代表物体在3D空间中的位置(如果没有看见箭头,选择物体,按“W”键),白色面代表物体当前视角。现在FPS控制器处于默认视角位置,通过移动它可以改变游戏视野。把角色移动到游戏环境关卡地面上面的位置。

Main Camera现在已经没有用处了,可以删掉了。

点击“Play”键,现在应该可以通过使用鼠标和键盘在本关卡地形中四处移动了(光标或者“W,A,S,D”)

现在我们创建了一个非常简单的FSP,下面我们给角色添加武器。

增加武器

下面我们将给游戏角色一个类似榴d的物体,可以在游戏中发射。要实现这个功能,需要创建一些脚本语言来在Unity中告知这个武器如何动作。

那么我们具体要实现什么呢?我们要使游戏角色能在摄像机的任意位置开火。但是,我们还是首先来思考一下游戏角色和武器。游戏角色游戏中是第一人称的视角,所以摄像机的位置与眼睛平行。如果玩家使用武器射击,武器应该是在角色的手部位置开火而不是眼睛的位置。这样我们就要增加一个“game object”(游戏物体)来代表榴d发射器,同时把它放置在游戏角色手持武器时武器所处的位置。这样就保证了开火的位置没有问题。

创建武器发射器

首先,创建一个“game object”代表榴d发射器。游戏物体是3D世界中的任一物体(角色、关卡、声音),零件就是游戏物体的属性。因此我们还需要对游戏物体添加零件:

从主菜单栏选择GameObject>Great Empty,并在层级面板中(Hierarchy)命名为“Launcher”。注意,空物体在场景中是看不见的,只是用它来作放置飞d发射器。

现在在场景中把视野推近到FPS控制器,便于我们放置武器发射器。

层级面板中选择FPS控制器,确保鼠标处于场景视图中,按“F”键。使窗口以当前选择的物体为中心。

层级面板中选择发射器,主菜单栏选择Game Object>Move to view。注意发射器如何移动到FPS控制器附近的。然后使用手柄,把发射器移动到大概角色手部的位置。

注意:可以通过设置这个物体的位置来设定游戏角色是左撇子还是右撇子,不需要写代码。

使Unity窗口模式是“2by3”模式(window>Layouts>2by3),点击播放键(play)。确保层级面板中点选了发射器,四处移动角色,同时观察场景窗口。你将发现发射器并没有随着角色一起运动(现在再次点击播放键停止运行游戏)

下面来解决这个问题,层级面板中,把发射器拖放到FPS控制器下面的主摄像机上。d出的对话框点击“是”。再次运行游戏,观察场景窗口,发射器已经和角色运动一致了。这样我们就把发射器与摄像机关联起来了。

创建飞d

下面我们来创建在玩家点击开火键时能够发射出来的飞d。

我们先用一个简单物体-球体-代替飞d。Unity主菜单栏点击Assets>Creat>;Prefab创建一个预制(Prefab)物体,命名为“Missile”

创建一个球体(GameObject>Create Object>Sphere)

层级面板中,拖放球体到飞d预制物体上(Missile),这时预制物体图标会变化。你可以从层级面板中删除球体。

技巧:游戏运行中产生的任何游戏物体都应该是预制物体(Prefab)。

编写飞d发射器脚本

FPS控制器是一个包含了几个游戏物体和部件的预制物体。FPS控制器本身是一个只能沿Y轴旋转的圆柱体,因此,如果我们直接把发射器脚本赋予FPS控制器的话,是实现不了上下开火的。所以我们把脚本赋予控制器中的能够四周转动的主摄像机。

下面我们来编写第一个描述发射器行为的JavaScript代码。

点击Assets>Greate>JavaScript,创建一个空的JavaScript文档。一个名为“NewBehaviourScript”资源将会出现在工程面板中,把它更名为“MissileLauncher”

技巧:通过Unity>;Preferences点击External Script Editor,可以自定义外部脚本编辑器。

工程面板中创建一个“WeaponScripts”文件夹,放置我们所有的武器脚本。把MissileLauncher脚本和飞d预制物体(Missile Prefab)拖到这个文件中。

我们来看看飞d发射器的完整JavaScript脚本。

进一步思考一下,我们到底想实现什么效果?我们要检测玩家是否按了开火键,然后产生一枚飞d,然后把它沿着玩家朝向的方向按照一定的速度发射出去。我们仔细的解剖一下脚本:

var projectile: Rigibody;

var speed=20;

function Update( )

{

这是脚本的开头部分,定义了一些属性,开启了“Update”的功能

if(InputGetButtonDown(“Fire1”))

首先我们要检测玩家是否按了开火键,“开火1”映射的是鼠标左键和当前配置的键盘上的按键(可以通过主菜单栏的Editor>;Project Settings>Input设定)

{

var instantiatedProjectile: Rigidbody=Instantiate(

projectile, transformposition,transformrotation);

我们用变量来定义产生的物体。变量的类型是Rigibody(刚体),因为飞d是具有物理属性的。

Unity中产生新物体使用的函数是Instantiate,它有三个参数,分别是:产生的物体、产生物体的3D空间位置、物体的旋转。它还有另一个语法结构,参照API手册,这里我们只使用这种结构。

第一个参数,projectile,代表我们想创建的物体。那么到底发射什么物体?具体产生的物体是可以手动设定的。实现方法:把Projectile定义为函数的外部变量,这样就可以在参数面板中显示出来。发射的物体也可以通过代码来创建,但如果你想使一个变量可调的话,还是用上面的方法。

第二个参数,transformposition,使产生的物体与发射器的空间位置一致。为什么就是发射器呢?因为如果要使飞d产生的位置没有问题,脚本就要关联给发射器。(transform读取的transform数据就是被赋予脚本的游戏物体transform数据)

第三个参数transformrotation,与第二个类似,只是它的值与发射器的旋转值是一样的。

代码的下一部分使飞d产生运动。为了实现运动,我们要赋予飞d一个速度,但是在哪个方向上(X,Y,Z)产生速度呢?在场景中,点击FPS控制器,出现运动箭头(如果没有出现,按“W”键),其中一个箭头是红色、一个是绿色、一个是蓝色。红色代表X轴,绿色代表Y轴,蓝色代表Z轴。因为蓝色指向的方向,与玩家面朝的方向一致,所以我们要在Z轴上给飞d一个速度。

(Velocity)速度是instantiatedProjectile的一个属性。我们怎么知道的呢?因为instantiatedProjectile是刚体的一种,如果我们看看API手册,我们就会知道速度是刚体的属性中的一种。同时也看看刚体的其它属性。要设置速度,我们就必须在各个轴向上设定数值。但还有个小问题。3D空间中的物体一般使用两种坐标模型:本地坐标系和世界坐标系。在本地坐标系中,物体的轴向只与物体本身有关。在世界坐标系中,轴向是绝对的,例如:向上,对所有物体来讲向上的方向都是一样的。

RigidbodyVellocity刚体物体速度必须使用世界坐标系。因此,定义速度时,需要把本地坐标系中的Z轴(朝前的方向)向转换成世界坐标系中的相应方向。可以用函数transformTransformDirection,它有三个向量作为自变量。变量speed也应该定义成外部变量,便于后面在编辑器中直接调节数值。

最后,我们要关闭飞d与游戏角色之间的碰撞。如果不这样做的话,飞d产生的时候就可能与角色发生碰撞。可以在API手册IgnoreCollision下查询详细信息。

MissileLauncherjs全部完整代码如下:

把脚本MissileLauncher赋予FPS控制器中的发射器。在层级面板中点击发射器,检查一下参数面板下面是否显示了MissileLauncher script。

先前创建的飞d的预制物体还没有与脚本中的变量projectile创建关联,我们需要在编辑器中创建一下。变量projectile只能与刚体关联,因此,首先我们要赋予飞d一个Rigidbody。

工程面板中点击飞d,然后从主菜单栏选择Components>;Physics>Rigidbody。这样将会给我们想开火发射的飞d一个刚体属性。我们必须确保想在游戏中发射的物体类型与脚本中外部变量要求的物体类型是同一类型的物体。

创建飞d与脚本中变量projectile的链接。首先在层级面板中点击发射器,然后把飞d的预制物体从工程面板中拖拽放置在发射器参数面板中MissileLauncher script部分上。

运行游戏的话,你会发现点击开火键可以发出一个受重力影响的小球了。

飞d爆炸

下面,当飞d与其他物体发生碰撞时,增加一个爆炸效果。要实现这个效果,我们要编写一段新脚本赋予飞d。

创建一个新脚本,命名为Projectile。拖放到工程面板的WeaponScripts文件夹下。

那么我们想要脚本Projectile实现什么样的效果呢?我们要检测飞d是否发生碰撞,然后在碰撞点产生一个爆炸效果。代码如下:

函数OnCollisionEnter内的程序代码的作用是计算被赋予脚本的物体是否与其他物体发生碰撞。

在函数OnCollisionEnter中我们主要是要实现在3D空间中飞d发生碰撞的点产生一个新爆炸。那么在何处了碰撞的呢?函数OnCollisionEnter就有个记录这个信息的功能。碰撞发生的点的信息储存在变量ContactPoint中。

这里我们使用函数Instantiate来创建一个爆炸。我们已经知道函数instatiate有三个参数:(1)产生的物体(2)物体的3D空间位置

(3)物体的旋转。

第一个参数,后面我们将会赋给一个带粒子系统的游戏物体。同时我们还想通过编辑器来实现这个功能,所以我们把变量设置为外部变量。

第二个参数,爆炸产生的点的位置,就是碰撞发生的位置。

第三个参数,爆炸旋转的设置,需要解释一下。我们需要爆炸体的Y轴方向与飞d和其他物体发生碰撞的那个表面的法线方向一致。这就是说如果是墙面那么爆炸就面向外,如果是地板就朝上。那么实际上我们就是要使爆炸体在本地坐标系的Y轴与飞d与之碰撞的物体的表面法线方向(世界坐标系)一致。

最后,我们要让飞d碰撞后就从游戏中消失,通过函数Destroy()实现,它的参数是gameObject(gameObject代表被赋予这个脚本的物体)。

Projectilejs全部代码如下:

把脚本赋予飞d预制物体(Missile prefab)。

下面我们要创建飞d发生碰撞时所产生爆炸的爆炸效果物体。

首先,创建一个新的预制物体(命名为Explosion)用来存放爆炸效果资源。

标准资源包中(standard asset)有个不错的爆炸预制物体,粒子系统和灯光都设置好了。把这个爆炸预制物体(在Standard Assets/Particles/explosion中)拖放到层级面板。

调节这个爆炸效果的各个参数直到你觉得满意,然后把它从层级面板中拖放到工程面板中的爆炸预制物体(Explosion Prefab)中。

现在把爆炸配置给飞d:

点选飞d预制物体(Missile Prefab),在参数面板Explosion变量栏,拖放工程面板中的爆炸到上面。

定义爆炸的行为

下面我们要再创建一个脚本来定义爆炸自身的特性。

创建一个新的脚本-Explosion,放在Weapons文件夹中,双击脚本进行编辑。

脚本中另一个常用函数称为Start()。当它配置给的物体是在游戏中产生的时候,函数Start()中的代码只被执行一次。我们要实现的效果就是在一定时间后,在游戏中删除爆炸。我们通过函数Destroy()的第二个参数实现,它的作用是定义执行删除前的时间长度。

变量explosionTime设置成外部变量,方便调节。

新建脚本插入以上代码时,要删除函数Update()。

把脚本Explosion赋予给爆炸预制物体。

音效

目前的游戏世界太安静了,让我们给爆炸效果增加点音效。

首先,给爆炸预制(Prefab)添加一段音频。

给爆炸添加音效前,我们首先要添加一个音源部件(Audio Source),在主菜单点击Component—Audio—Audio Source。你会发现音源部件有一个Audio Clip的属性。

把“RocketLauncherImpact”音效添加给爆炸预制体的AudioClip外部变量。Unity支持多种音频格式。

运行游戏,发射飞d的时候就有声音了!

添加图形界面

下面我们来添加GUI,有点像头部显示设备(HUD)。我们要做的GUI非常简单,就一个准星。

添加一个准星:

工程栏中创建一个GUI的文件夹。

创建一个新脚本,命名为“准星”(Crosshair),拖到GUI文件夹。

Crosshair中写入下面的脚本:

首先我们设定了两个变量。第一个变量是定义我们将要用可选的方式来选择图形纹理。第二个变量定义了一个方形区间,它是图形纹理在屏幕上的位置范围。

在start( ) 中函数用来设定图形纹理在屏幕上的位置。函数中,有四个参数,用来定义方形区域的大小和位置。第一个参数定义了方形区域的左边框,第二个是底边框,第三和第四个参数定义了宽和高。

OnGUI( )函数中,使用GUI类程序来让图形显示在屏幕上。DrawTexture( )函数的参数position和crosshairTexture将使准星显示在屏幕的中央位置。

保存脚本。

创建一个新的空物体,命名为“GUI”。

把脚本“Crosshair”赋予给GUI物体。

点选GUI物体,把在文件夹Texturelaim下的欲使用的图形拖放到参数面板变量Crosshair Texture中。

运行游戏,屏幕中就会有准星显示了。

物理特效:

现在,我们想要游戏中的物体效果越真实越好,这是通过添加物理特效实现的。在这一节中,我们将在环境中添加一些物体,他们能被飞d击中后有相应的反应。首先有几个新概念要解释下。

校正(Update)

先前,我们在函数Update()中写入代码,这样可以在每一帧都执行其中的代码。其中有个例子是检测玩家点击开火键。帧速并不是一个固定值,它是根据场景复杂度等因素来定的。各帧之间的时间差会导致不稳定的物体反应。因此,如果想在场景中添加有物理反应的物体(刚体等),代码就应该写在函数FixedUpdate()中。Unity中deltaTime的值用来测定渲染两个连续帧的所用时间。

一般而言,函数Update与FixedUpdate之间的区别如下:

Update()-其中的代码通常用于角色行为、游戏逻辑等。这个函数中的deltaTime值并不是固定的。

FixedUpdate()-其中的代码通常用于刚体物体(物理属性的行为)。函数中deltaTime的值通常是固定的。

FixedUpdate函数被调用的频率是主菜单中Edit-Project Settings-Time的FixedTimestep属性确定的,当然也是可以更改的。第二个属性Time Scale是读取每秒的帧速和相应的倒数值。

技巧:定义FixedTimestep值时,要注意把握好一个平衡:值越小,物理效果越真实越好,但影响游戏运行速度。应该同时确保游戏运行速度和物理效果的真实性。

最后说一下yield,它相当于暂停当前正在执行的函数。

回到游戏,我们想实现的效果:

使玩家可以发射飞d(已经实现了)。

如果飞d与其它刚体物体发生碰撞,检测其范围类是否有其它被赋予刚体属性的物体。

对爆炸冲击力范围内的每个刚体物体,均给予一个upwards方向上的力,使它们对飞d产生反应。

让我们看看修改后的爆炸脚本(Explosion Javascript)

首先检测下飞d落点周围是否有带碰撞器的物体。函数PhysicsOverlapSphere()有两个参数:3D位置和半径值,然后返回一组检测到的在半径内的碰撞器的数组。

一旦得到这些数组后,就会对每个对应碰撞器的刚体物体一个在特定方向上的力。

然后我们在飞d的炸点处,向上的方向增加一个力(ExplosionPower)。但是,爆炸效果是随着距离而递减的,作用力大小不能在整个半径内都一样。圆周位置的刚体物体受到的作用力应该比炸点中心处小。函数把这种效果也考虑在内的。通过调节外部变量explosionPower和explosionRadius的值,可以较容易的得到想要的效果。

Unity——第一人称控制器的实现

一、功能描述

在一个场景中实现人物的前后左右移动和跳跃功能;其中前后左右移动通过W、A、S、D方向键实现,跳跃功能通过空格键实现,并且考虑到重力作用,来调节跳跃功能。

二、功能实现

21创建一个Character Controller

先创建一个新的GameObject,并重命名为Player

并为其添加一个Character Controller组件

在Player下,创建一个Cylinder物体(代替人物),并将场景中的主相机(Main Camera)放于Player下

将Cylinder物体中的Capsule Collider组件删除,解决碰撞问题。

22实现相机(第一人称视角的旋转,左右)的移动

相机的视角通过鼠标mouse进行控制

Assets文件夹下创建Scripts文件夹,用来保存代码文件;并在Scripts文件夹下创建CameraMove的C#文件并打开;

直接放代码,相关解释在代码里:

Unity Shader 不支持快捷键注释,但是你可以使用以下替代方法:

1 在行前面加上//,这样就可以将该行注释掉;

2 使用/ /块注释,这样可以将多行注释掉;

3 使用Ctrl+K+C注释,这样可以将选中的代码注释掉;

4 使用Ctrl+K+U取消注释,这样可以将注释掉的代码取消注释。

控制角色移动播放动作或者其他逻辑则需要给这个橘色节点绑定逻辑脚本,UNity支持多种脚本语言,在此是用JAVA脚本

创建 脚本Assets --> Create ----> JavaScript 创建一个空的逻辑脚本,并将这个脚本绑定在主角对象身上,绑定方式是直接拖拽到主角节点即可。

对脚本的编写:

类及接口主要参照帮助文档,这里只介绍脚本基本结构和简单示例:

每个脚本至少都有两个函数: function Start() 可以认为是初始化 function Updata()则是每帧更新函数。

要实现对角色位置的控制移动首先要定义该角色,

首先 定义GameObject对象也就是要控制的目标: private var _MainRole:GameObject;;

在function Start() 函数中初始化该对象: inRole = GameObjectFind("MainRole"); // 从场景中查找到名叫"MainRole"的对象也就是主角。

在每帧更新时侦听键盘事件,如果按键按下W则空对象向前移动

if(InputGetKey(KeyCodeW))

{

_MainRoletransformTranslate( Vector3forward 005 );

}

至此,就已经完成按键控制角色移动的全部过程,运行游戏就可以用按键控制角色移动。

private GameObject _Car;

    private float _Speed = 100;

void Start () {

        _Car = Instantiate(ResourcesLoad("实例化物体名")) as GameObject;

      

}

void Update () {

        if (InputGetKeyDown(KeyCodeW))

        {

            _CartransformTranslate(Vector3forward  _Speed  TimedeltaTime);

        }

        if (InputGetKeyDown(KeyCodeS))

        {

            _CartransformTranslate(-Vector3forward  _Speed  TimedeltaTime);

        }

        if (InputGetKeyDown(KeyCodeA))

        {

            _CartransformTranslate(Vector3left  _Speed  TimedeltaTime);

        }

        if (InputGetKeyDown(KeyCodeD))

        {

            _CartransformTranslate(Vector3right  _Speed  TimedeltaTime);

        }

    }

Unity是由Unity

Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender

game engine, Virtools 或 Torque Game

Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS

X下,可发布游戏至Windows、Mac、Wii、iPhone和Android平台。也可以利用Unity web

player插件发布网页游戏手机游戏,支持Mac 和Windows的网页浏览。

Windows系统Unity3D中的快捷键

组合键 键 功能

File 文件

Ctrl N New Scene 新建场景

Ctrl O Open Scene 打开场景

Ctrl S Save Scene 保存

Ctrl Shift S Save Scene as 保存场景为

Ctrl Shift B Build Settings 编译设置

Ctrl B Build and run 编译并运行

Edit 编辑

Ctrl Z Undo 撤消

Ctrl Y Redo 重做

Ctrl X Cut 剪切

Ctrl C Copy 拷贝

Ctrl V Paste 粘贴

Ctrl D Duplicate 复制

Shift Del Delete 删除

F Frame selected 选择的帧

Ctrl F Find 查找

Ctrl A Select All 全选

Ctrl P Play 播放

Ctrl Shift P Pause 暂停

Ctrl Alt P Step 停止

Assets 资源

Ctrl R Refresh 刷新

Game Object 游戏对象

Ctrl Shift N New Empty 新建空游戏对象

Ctrl Alt F Move to view 移动到视图

Ctrl Shift F Align with view 视图对齐

Window

Ctrl 1 Scene 场景

Ctrl 2 Game 游戏

Ctrl 3 Inspector 检视面板

Ctrl 4 Hierarchy 层次

Ctrl 5 Project 项目

Ctrl 6 Animation 动画

Ctrl 7 Profiler 分析器

Ctrl 8 Particle Effect 粒子效果

Ctrl 9 Asset store 资源商店

Ctrl 0 Asset server 资源服务器

Ctrl Shift C Console 控制台

Ctrl TAB Next Window 下一个窗口

Ctrl Shift TAB Previous Window 上一个窗口

Ctrl Alt F4 Quit 退出

Tools 工具

Q Pan 平移

W Move 移动

E Rotate 旋转

R Scale 缩放

Z Pivot Mode toggle 轴点模式切换

X Pivot Rotation Toggle 轴点旋转切换

Ctrl LMB Snap 捕捉 (Ctrl+鼠标左键)

V Vertex Snap 顶点捕捉

Selection

Ctrl Shift 1 Load Selection 1 载入选择集

Ctrl Shift 2 Load Selection 2

Ctrl Shift 3 Load Selection 3

Ctrl Shift 4 Load Selection 4

Ctrl Shift 5 Load Selection 5

Ctrl Shift 6 Load Selection 6

Ctrl Shift 7 Load Selection 7

Ctrl Shift 8 Load Selection 8

Ctrl Shift 9 Load Selection 9

Ctrl Alt 1 Save Selection 1 保存选择集

Ctrl Alt 2 Save Selection 2

Ctrl Alt 3 Save Selection 3

Ctrl Alt 4 Save Selection 4

Ctrl Alt 5 Save Selection 5

Ctrl Alt 6 Save Selection 6

Ctrl Alt 7 Save Selection 7

Ctrl Alt 8 Save Selection 8

Ctrl Alt 9 Save Selection 9

Mac系统Unity3D中的快捷键

组合键 键 功能

File 文件

CMD N New Scene 新建场景

CMD O Open Scene 打开场景

CMD S Save Scene 保存

Shift CMD S Save Scene as 保存场景为

Shift CMD B Build Settings 编译设置

CMD B Build and run 编译并运行

Edit 编辑

CMD Z Undo 撤消

Shift CMD Z Redo 重做

CMD X Cut 剪切

CMD C Copy 拷贝

CMD V Paste 粘贴

CMD D Duplicate 复制

Shift Del Delete 删除

CMD F Frame selected 选择的帧

CMD F Find 查找

CMD A Select All 全选

CMD P Play 播放

Shift CMD P Pause 暂停

Alt CMD P Step 停止

Assets 资源

CMD R Refresh 刷新

Game Object 游戏对象

Shift CMD N New Empty 新建空游戏对象

Alt CMD F Move to view 移动到视图

Shift CMD F Align with view 视图对齐

Window

CMD 1 Scene 场景

CMD 2 Game 游戏

CMD 3 Inspector 检视面板

CMD 4 Hierarchy 层次

CMD 5 Project 项目

CMD 6 Animation 动画

CMD 7 Profiler 分析器

CMD 8 Particle Effect 粒子效果

CMD 9 Asset store 资源商店

CMD 0 Asset server 资源服务器

Shift CMD C Console 控制台

Tools 工具

Q Pan 平移

W Move 移动

E Rotate 旋转

R Scale 缩放

Z Pivot Mode toggle 轴点模式切换

X Pivot Rotation Toggle 轴点旋转切换

CMD LMB Snap 捕捉 (Ctrl+鼠标左键)

V Vertex Snap 顶点捕捉

Selection

Shift CMD 1 Load Selection 1 载入选择集

Shift CMD 2 Load Selection 2

Shift CMD 3 Load Selection 3

Shift CMD 4 Load Selection 4

Shift CMD 5 Load Selection 5

Shift CMD 6 Load Selection 6

Shift CMD 7 Load Selection 7

Shift CMD 8 Load Selection 8

Shift CMD 9 Load Selection 9

Alt CMD 1 Save Selection 1 保存选择集

Alt CMD 2 Save Selection 2

Alt CMD 3 Save Selection 3

Alt CMD 4 Save Selection 4

Alt CMD 5 Save Selection 5

Alt CMD 6 Save Selection 6

Alt CMD 7 Save Selection 7

Alt CMD 8 Save Selection 8

Alt CMD 9 Save Selection 9

unity3d如何学习:

第一步首先了解unity3d的菜单,视图界面。这些是最基本的基础,可以像学word *** 作一样,大致能明白有几个菜单,几个基本的视图,各自起什么作用的就可以了。

第二步理解场景里面的坐标系统,输入系统,简单的向量概念。Unity3D的坐标系统及向量概念如果不理解清楚,不理解世界坐标,局部坐标的关系,即使一个简单的移动,缩放,旋转的几行代码,也会困惑你半天。

第三步学习创建基本的场景的一些基本概念:游戏对象,组件,脚本。在界面上分别体现在层次视图,项目视图及属性视图,要理清楚彼此之间的关系

第四步学习资源导入方面的一些基本元素:网格,材质,贴图,动画等。

第五步学习脚本的生命周期,Start,UpDate,ONGUI这些基本的方法。了解,预制,时间,数学等常用的类及相关方法。理解游戏对象,组件,脚本彼此之间的关系。

第六步进一步学习摄像机,灯光,地形,渲染,粒子系统,物理系统等等,这些每一个深入进出都是一个很复杂的主题。

第七步一些更高级的概念:向量的加减法点乘差乘,光照法线贴图,内存管理,图形优化等等。Unity3D入门容易,真的要精通,那是相当难的。

以上就是关于用Unity 怎么制作3D第一人称射击游戏。全部的内容,包括:用Unity 怎么制作3D第一人称射击游戏。、unity第一人称控制器怎么使用鼠标点击、unityshader用不了注释快捷键等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9375485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存