2016-08-12 13:52:15 ios_song 阅读数 1103
  • C# For Unity系列之基础篇

          本套C#语言教程,全部采用案例化教学模式。结合C#知识点在实际游戏中具体的应用场景,让初级学员快速、深入的学好C#语言,为进一步全面、高效的学习Unity游戏引擎,制作精良的游戏产品,打下坚实的语言基础!        真正学好Unity,其先决条件是一定要有稳固、扎实的编程基础!因此目前绝大多数(线下)Unity培训机构(一般4-5个月)都会先给学员讲解C# for Unity 的编程加强课程。(一般高校的编程课程内容少、不深入...)         本套《C# for Unity》课程共分为“入门篇”、“基础篇”、“中级篇”、“进阶篇”,分别对应于完全“零”编程基础、较少编程基础、需要强化C#编程、需要深入学习C#脚本,等各类型学员群体。       说明:  本课程使用Virtual Studio2012,以及Unity5.2 进行开发与讲解。(学员使用更高版本,对学习影响不大) 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    12124 人正在学习 去看看 刘国柱

Unity 2D 终结手册 (1) - 2D 项目_Unity3d 开发

这篇系列文章主要介绍 Unity 2D开发技术。包括2D/3D项目的区别、如何设置2D/3D模式、2D开发中使用到的组件等。

Unity 不止能够制作酷炫的 3D 游戏,同样也能够制作完美的2D游戏。使用Unity开发2D内容时,编辑器的大部分功能都是通用的,只不过有些功能为了简化2D开发,做了一些调整。


(图 1)Unity 2D 游戏

Scene 视图上方的工具条中,有一个明显的 2D模式按钮,点击按钮就能够在2D/3D模式间进行切换。当开启2D模式时,场景会以正交视图进行显示(3D模式下是以透视视图进行显示的),此时Scene视图的视角看起来是朝着Z轴正方向的,并且向上是Y轴正方向。在此模式下我们可以轻松地设置2D场景、操作2D对象。


(图 2)2D 模式下的 Scene 视图

当我们创建一个新的项目时,我们可以选择是以 2D 模式还是 3D模式启动。2D/3D模式决定了Unity编辑器的一些设置,比如当导入一张图片时,会把它默认作为Texture(纹理)还是Sprite(精灵)。如果我们不小心选错了模式也不要紧,在项目创建成功之后,我们依然可以在2D/3D模式之间切换。如果我们不太清楚我们的项目应该以2D模式还是以3D模式开始,我们就应该先了解一下2D/3D项目的区别。

一、完全 3D 的项目

3D 游戏通常使用三维立体几何模型,使用材质(Material)并将纹理(Texture)渲染(Render)在这些模型表面,使它们看起来像个房子、角色或其它物体,然后构成整个游戏世界。摄像机可以在场景周围自由地移动,逼真的光影投射在整个游戏世界中。3D游戏的渲染需要通过视角计算,这样一来,越靠近摄像机的物体,在屏幕上就会显示的越大。对于满足这些描述的游戏,都应该在3D模式下进行开发。


(图 3)一些完全 3D 的场景

二、正交 3D 项目

有时,游戏中会使用三维立体几何模型,但是摄像机却是正交摄像机,而不是透视摄像机。这是游戏开发中一种常用的技术,一般会以鸟瞰图的形式呈现整个场景,我们也叫它“2.5D”。如果我们需要开发这样的游戏,也应该选择3D模式,因为即使整个画面看起来没有透视效果,但我们仍然需要使用3D模型和资源。不过需要把摄像机和场景视图调整为正交。

Unity 2D 开发(1)_ 2D/3D项目_Unity3d 开发技术

(图 4)一些采用正交视图的 3D 游戏

三、完全 2D 项目

许多 2D 游戏使用的是平面图形,也叫作Sprite(精灵)。它们没有立体感,是直接绘制在屏幕上的图像,并且游戏中的摄像机没有透视的感觉。对于这种类型的项目,我们应该选择在2D模式下开始。

Unity 2D 开发(1)_ 2D/3D项目_Unity3d 开发技术

(图5)一些完全 2D 的游戏

四、使用 2D 的玩法但是采用 3D 图形的项目

在一些游戏中使用了三维立体模型,但限制游戏在两个维度上进行,只有 2D 的玩法。例如,游戏中使用的是 3D模型的障碍物、人物、场景,摄像机也是透视摄像机,但是摄像机永远只能提供一个横向滚动的视图,玩家也只能操作人物在两个维度上运动。对于这些游戏,3D只能算是一种风格,并不是游戏的功能。这种游戏也可以叫做“2.5D”。由于在开发过程中我们需要使用到3D模型,所以这类游戏同样需要选择3D模式。

Unity 2D 开发(1)_ 2D/3D项目_Unity3d 开发技术

(图 6)一个 2D 横板游戏,但是采用了 3D 图形效果

五、使用 2D 图形和玩法,但包含透视相机的项目

这也是 2D 游戏常用的一种风格,采用2D图像但使用的是透视摄像机。这种项目中,所有的图像都是平面的,但是距离摄像机的远近不同,当摄像机移动时会产生一种视差滚动的效果,比较有层次感。我们在2D模式下就能够进行开发,只是需要把Scene视图设置为3D,并且将摄像机调整为透视摄像机。


(图 7)一个完全 2D 的游戏,但是使用了透视摄像机

六、其他类型的项目

你的项目可能属于上述类型中的一种,也可能你想制作一款完全不同风格的项目,可以参考上面提到过的常见的类型,并且记住2D/3D模式是可以在项目开发过程中随时修改的。

2016-10-20 11:37:16 xmousez 阅读数 6606
  • C# For Unity系列之基础篇

          本套C#语言教程,全部采用案例化教学模式。结合C#知识点在实际游戏中具体的应用场景,让初级学员快速、深入的学好C#语言,为进一步全面、高效的学习Unity游戏引擎,制作精良的游戏产品,打下坚实的语言基础!        真正学好Unity,其先决条件是一定要有稳固、扎实的编程基础!因此目前绝大多数(线下)Unity培训机构(一般4-5个月)都会先给学员讲解C# for Unity 的编程加强课程。(一般高校的编程课程内容少、不深入...)         本套《C# for Unity》课程共分为“入门篇”、“基础篇”、“中级篇”、“进阶篇”,分别对应于完全“零”编程基础、较少编程基础、需要强化C#编程、需要深入学习C#脚本,等各类型学员群体。       说明:  本课程使用Virtual Studio2012,以及Unity5.2 进行开发与讲解。(学员使用更高版本,对学习影响不大) 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    12124 人正在学习 去看看 刘国柱

在最开始使用Unity时(版本5.2.1),因为要跟着各种教程去动手,所以新建工程特别多。而在当时的版本中貌似一直有一个Bug,就是新建工程选项中的2D和3D根本就不好使!貌似建出来的场景感觉上完全是随机的!当时还完全什么都不懂的我当然只能够删除工程再重新建立。。。

现在使用Unity也有一小段时间了,在这里整理一下2D模式和3D模式中的区别,希望能对碰到同样情况的同学有所帮助。

首先,Unity中不存在2D和3D工程的区别

为什么这么说呢?在Unity中,2D和3D只是一种视角上的转换,所有的物体都是有3D坐标信息的,在Vector3转为Vector2,并且视图方式由透视变为正交的时候,Z轴信息就没有意义了,也就从3D变为了2D。

新建时的2D和3D选项,只是Unity提供的两种类型的默认场景,只要你愿意,可以随时随地自由切换!

2D模式:

  • 层级视图中只有一个正交摄像机(Projection选择的是Orthographic)。
  • 场景视图选择的是2D模式。
  • Window->Lighting->Scene中的Skybox是none。AmbientSource是灰色。下面的GI选项没有选中。

3D模式:

  • 层级视图中有一个透视摄像机(Projection选择的是Perspective),并且还有一个线性光源模拟太阳光
  • 场景视图中没有选择2D模式。
  • Window->Lighting->Scene中的Skybox是Default。AmbientSource是Skybox。下面的GI选项都是选中的。

上面的区别可能不是太完全,不过只要你对这些参数进行一下修改,你就大概能知道Unity中2D模式和3D模式的区别了。

在真正做项目时,2D和3D并不是工程的类型,只是场景的显示方式而已。如果要详细去了解Unity中的3D和2D,可以多了解一下 天空盒正交摄像机、透视摄像机 以及 Unity中的光源类型

2017-08-26 19:44:37 KiTok 阅读数 486
  • C# For Unity系列之基础篇

          本套C#语言教程,全部采用案例化教学模式。结合C#知识点在实际游戏中具体的应用场景,让初级学员快速、深入的学好C#语言,为进一步全面、高效的学习Unity游戏引擎,制作精良的游戏产品,打下坚实的语言基础!        真正学好Unity,其先决条件是一定要有稳固、扎实的编程基础!因此目前绝大多数(线下)Unity培训机构(一般4-5个月)都会先给学员讲解C# for Unity 的编程加强课程。(一般高校的编程课程内容少、不深入...)         本套《C# for Unity》课程共分为“入门篇”、“基础篇”、“中级篇”、“进阶篇”,分别对应于完全“零”编程基础、较少编程基础、需要强化C#编程、需要深入学习C#脚本,等各类型学员群体。       说明:  本课程使用Virtual Studio2012,以及Unity5.2 进行开发与讲解。(学员使用更高版本,对学习影响不大) 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    12124 人正在学习 去看看 刘国柱

Unity 2D Sprite的正确打开方式


这里简单的叙述一下Unity3D 的 Sprite组件的需要注意的基本功能,适合不懂的人看。

  • 首先需要说明Unity编辑器中创建的2D和3D工程,在初始时候会有什么区别:
    1. 在2D中Camer默认的Projection模式为Orthograpic,而3D中为Perspective
    2. 在2D 中Scene窗口默认处于2D模式下,而3D为3D模式。
    3. 向2D工程的Assets目录中添加图片资源的时候,默认Texture Type为Sprite,而3D为Default.
    4. 在Editor Setting中(Edit -> Project Setting -> Editor),2D工程的Default Behavior Mode为2D,而3D中为3D。


  • 在导入一张图片的时候,可以在Inspector窗口中查看图片信息,以及对他进行相应的一些操作。
    1. 其中Pixels To Units默认值为100,表示该图片的长或宽上100个像素对应与世界坐标系的1个单位长度。
    2. 一般情况下,当需要放大模型时候,是直接调节对象的Transform的Scale。但由于2D场景中,处理的都是图片(像素数据),所以图片分辨率小但是又去强制放大,就会出现马赛克或锯齿。所有这时候就要调节前面提及的Pixels To Units。通过修改世界坐标系中1个单位长度对应的Sprite长或宽的像素来改变Sprite的显示大小,值越小图片越大。
    3. 3.


  • 有过3D开发经验的你应该知道,在3D图形学中有一种画家算法,即后绘制的几何形状会覆盖之前的绘制形状。而Sprite组件中的Sorting Layer属性控制的是不同层之间的绘制顺序,而Order in Layer属性控制的是同层中物体的绘制顺序。


  • 制作Sprite动画:
    1. 首先找一张有良好分割的帧图片,导入到Unity中。
    2. Inspector窗口中查看该图片信息。修改其中Sprite Mode为Multiple。然后Apple,再打开Sprite Editor
    3. 然后点击Sprite Editor窗口左上角的Slice,保持默认设置,然后点击Slice。如果每个图片的分割良好的话,Unity会自动对图集的每个图片进行进行划分区域。否则,你就得去手动调节。OK之后,Apply保存退出。
    4. 这样就可以直接把这个Sprite图片拖到Hierarchy视图中。创建一个Sprite对象。
    5. 为其添加Animations组件。(方式: Window -> Animation),然后点击Creat。
    6. 创建动画片段之后。可以直接把刚才拆分好的所以子图片直接拖到时间线上。
    7. 其中,Animation的采样率Sample可以调节动画速度。值越小,动画越慢。
2016-12-06 13:45:56 Irwin_VR 阅读数 1083
  • C# For Unity系列之基础篇

          本套C#语言教程,全部采用案例化教学模式。结合C#知识点在实际游戏中具体的应用场景,让初级学员快速、深入的学好C#语言,为进一步全面、高效的学习Unity游戏引擎,制作精良的游戏产品,打下坚实的语言基础!        真正学好Unity,其先决条件是一定要有稳固、扎实的编程基础!因此目前绝大多数(线下)Unity培训机构(一般4-5个月)都会先给学员讲解C# for Unity 的编程加强课程。(一般高校的编程课程内容少、不深入...)         本套《C# for Unity》课程共分为“入门篇”、“基础篇”、“中级篇”、“进阶篇”,分别对应于完全“零”编程基础、较少编程基础、需要强化C#编程、需要深入学习C#脚本,等各类型学员群体。       说明:  本课程使用Virtual Studio2012,以及Unity5.2 进行开发与讲解。(学员使用更高版本,对学习影响不大) 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    12124 人正在学习 去看看 刘国柱

相信学习Unity3D基础到一定时候,都会主动或被动的涉及到一些设计模式了。其实Unity开发是基于组件的开发,虽然也是使用C#开发语言,但是我们会发现那些C#里的好多经典设计模式似乎用起来都不是太友好,下面几天,作者本人将对一些模式进行学习笔记整理,文章也就暂归类到所谓的项目架构这个大帽子底下吧,

一、U3D简单状态机模式

如果我们需实现一个2d或3d游戏中的人物控制,可以让Hero 走、跑,相信不少人会这么写:

[csharp] view plaincopy
  1.    if (Input.GetKey(KeyCode.D))  
  2.         {  
  3. …设置方向向右..  
  4.             if (Input.GetKey(KeyCode.LeftShift))  
  5.             {  
  6. ..移动..播放跑步动画..  
  7.             }  
  8.             else  
  9.             {  
  10. ..移动..播放走路动画..  
  11.             }  
  12.   
  13.         }  
  14.         else if (Input.GetKey(KeyCode.A))  
  15.         {  
  16.         …设置方向向左..  
  17.             if (Input.GetKey(KeyCode.LeftShift))  
  18.             {  
  19. ..移动..播放跑步动画..  
  20.             }  
  21.             else  
  22.             {  
  23. ..移动..播放走路动画..  
  24.             }  
  25.         }  

这时还想加上跳跃功能,怎么办呢,跳跃时肯定不能执行走路的操作播放走路的动画啊,加一个bool判断吧,然后代码变成了这样:

  1. bool isJump = false;  
  2.     if (Input.GetKeyDown(KeyCode.W))  
  3. {  
  4. isJump = true;  
  5. }  
  6.   
  7.     if (Input.GetKey(KeyCode.D))  
  8.         {  
  9. …设置方向向右..  
  10.             if (Input.GetKey(KeyCode.LeftShift))  
  11.             {  
  12. if(!isJump)  
  13. ..移动..播放跑步动画..  
  14. else  
  15. ..移动..播放跳跃动画..  
  16.             }  
  17.             else  
  18.             {  
  19. if(!isJump)  
  20. ..移动..播放走路动画..  
  21. else  
  22. ..移动..播放跳跃动画..  
  23.             }  
  24.   
  25.         }  
  26.         else if (Input.GetKey(KeyCode.A))  
  27.         {  
  28.         …设置方向向左..  
  29. if(!isJump)  
  30. ..移动..播放跑步动画..  
  31. else  
  32. ..移动..播放跳跃动画..  
  33.             }  
  34.             else  
  35.             {  
  36. if(!isJump)  
  37. ..移动..播放走路动画..  
  38. else  
  39. ..移动..播放跳跃动画..  
  40.             }  
  41.         }  
这要跳跃下得按多少个键啊,呵呵哒。。。但总算还在可控制内把功能实现了。

吐血 几升,可工作还得做,再加一个bool,再加判断!

  1. bool isCrouch = false;  
  2.     if (Input.GetKeyDown(KeyCode.S))  
  3. {  
  4. isCrouch = true;  
  5. }  
  6.   
  7.   
  8. bool isJump = false;  
  9.     if (Input.GetKeyDown(KeyCode.W)&&! isCrouch)  
  10. {  
  11. isJump = true;  
  12. }  
  13.   
  14.     if (Input.GetKey(KeyCode.D))  
  15.         {  
  16. …设置方向向右..  
  17.             if (Input.GetKey(KeyCode.LeftShift))  
  18.             {  
  19. if(!isJump&&! isCrouch)  
  20. ..移动..播放跑步动画..  
  21. else if(!isCrouch)  
  22. ..移动..播放跳跃动画..  
  23. else  
  24. ..移动..播放蹲走动画..  
  25.             }  
  26.             else  
  27.             {  
  28. if(!isJump&&! isCrouch)  
  29. ..移动..播放跑步动画..  
  30. else if(!isCrouch)  
  31. ..移动..播放跳跃动画..  
  32. else  
  33. ..移动..播放蹲走动画..            }  
  34.   
  35.         }  
  36.         else if (Input.GetKey(KeyCode.A))  
  37.         {  
  38.         …设置方向向左..  
  39. if(!isJump&&! isCrouch)  
  40. ..移动..播放跑步动画..  
  41. else if(!isCrouch)  
  42. ..移动..播放跳跃动画..  
  43. else  
  44. ..移动..播放蹲走动画..  
  45.             }  
  46.             else  
  47.             {  
  48. if(!isJump&&! isCrouch)  
  49. ..移动..播放跑步动画..  
  50. else if(!isCrouch)  
  51. ..移动..播放跳跃动画..  
  52. else  
  53. ..移动..播放蹲走动画..  
  54.             }  
  55.         }  
这么多的IF分支,好好看,花括号别漏了,要是还得再加入攻击,跳劈等怎么办,花括号够不够用啊,很怀疑。


这时候,我们友好的Unity3D引擎其实早想到了,当然本文也不是复述整理怎么画状态机了,随便一本基础引擎教程里也有状态机介绍讲解了,


所以,(有限状态机内容)跳过


下面整理结合有限状态机的C#设计模式,

重点也就是enum&switch组合


实现Player的走、跑、跳、攻击、防御功能


  1. public enum CharacterState 
  2.     {  
  3.         Idling = 0,  
  4.         Walking = 1,  
  5.         Running = 2,
  6.         Jumping = 3,  
  7.         acting= 4,  
  8.         defending= 5,  
  9. }  
  10. public CharacterState  heroState = CharacterState. Idling;  
设置一个函数InputManager来专门处理判断玩家的输入与状态操作,此方法需要update调用实现,思路代理如下:

  1. void InputManager()  
  2.     {  
  3. switch(heroState)  
  4. {  
  5. case CharacterState. Idling:  
  6. …播放空闲动画..  
  7. if…Input.GetKey –A,D.  
  8. this. heroState = CharacterState. Walking;  
  9. else if…Input.GetKey –w.  
  10. this. heroState = CharacterState. Jumping; 
  11. else if…Input.GetKey –H.;
  12. this. heroState = CharacterState. Running; 
  13. else if…Input.GetKey –J.  
  14. this. heroState = CharacterState. acting;  
  15. else if…Input.GetKey –I.  
  16. this. heroState = CharacterState. defending;  
  17. break;  
  18. case CharacterState. Walking:  
  19. if…Input.GetKey –A,D.  
  20. …CharacterController移动操作..  
  21. else…Input.GetKeyUp – A,D…  
  22. this. heroState = CharacterState. Idling;  
  23. break;  
  24. case CharacterState. Jumping:  
  25. if(Input.GetKeyUp(KeyCode.W))  
  26. …CharacterController移动操作..  
  27. if(CharacterController.isGrounded)  
  28. {  
  29. this. heroState = CharacterState. Idling;  
  30. }  
  31. break;  
  32. case CharacterState. acting:  
  33. …播放攻击动画.  
  34. chargeTime += Time.timeScale / Time.deltaTime;  
  35. if(chargeTime>maxTime)  
  36. {  
  37. this. heroState = CharacterState. Idling;  
  38. chargeTime = 0;  
  39. }  
  40. break;  
  41. case CharacterState. defending:  
  42. …播放防御动画.  
  43. if(Input.GetKeyUp(KeyCode.I))  
  44. this. heroState = CharacterState. Idling;  
  45. break;  
  46. }  
  47.     }  


这样可以实现一个简单的状态机,所有状态操作都被整合在一起,原理是轮询当前的状态,处理当前状态操作,接受玩家输入来转换状态。


当然,有明显缺点,所以姑且成为简单状态机模式,下回对此模式进行改进,升级为状态模式

2017-01-28 16:05:17 qq_36215025 阅读数 7418
  • C# For Unity系列之基础篇

          本套C#语言教程,全部采用案例化教学模式。结合C#知识点在实际游戏中具体的应用场景,让初级学员快速、深入的学好C#语言,为进一步全面、高效的学习Unity游戏引擎,制作精良的游戏产品,打下坚实的语言基础!        真正学好Unity,其先决条件是一定要有稳固、扎实的编程基础!因此目前绝大多数(线下)Unity培训机构(一般4-5个月)都会先给学员讲解C# for Unity 的编程加强课程。(一般高校的编程课程内容少、不深入...)         本套《C# for Unity》课程共分为“入门篇”、“基础篇”、“中级篇”、“进阶篇”,分别对应于完全“零”编程基础、较少编程基础、需要强化C#编程、需要深入学习C#脚本,等各类型学员群体。       说明:  本课程使用Virtual Studio2012,以及Unity5.2 进行开发与讲解。(学员使用更高版本,对学习影响不大) 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    12124 人正在学习 去看看 刘国柱

在Unity中,2D和3D只是一种视角上的转换,所有的物体都是有3D坐标信息的,在Vector3转为Vector2,并且视图方式由透视变为正交的时候,Z轴信息就没有意义了,也就从3D变为了2D。

2D模式:

层级视图中只有一个正交摄像机(Projection选择的是Orthographic)。
这里写图片描述

场景视图选择的是2D模式。
这里写图片描述
Window->Lighting->Scene中的Skybox是none。AmbientSource是灰色。下面的GI选项没有选中。
这里写图片描述

3D模式

层级视图中有一个透视摄像机(Projection选择的是Perspective),并且还有一个线性光源模拟太阳光。

场景视图中没有选择2D模式。

Window->Lighting->Scene中的Skybox是Default。AmbientSource是Skybox。下面的GI选项都是选中的。

上面的区别可能不是太完全,不过只要你对这些参数进行一下修改,你就大概能知道Unity中2D模式和3D模式的区别了。

在真正做项目时,2D和3D并不是工程的类型,只是场景的显示方式而已。如果要详细去了解Unity中的3D和2D,可以多了解一下 天空盒,正交摄像机、透视摄像机 以及 Unity中的光源类型。

没有更多推荐了,返回首页