unity入门_unity入门案例球 - CSDN
精华内容
参与话题
  • unity入门教学,新手教学,新手到大神的教学。。。

    首先声明一下,我用的Unity版本是4.6.6,编译环境是VS2010,其余的我会慢慢介绍,安装的过程这里我就不做讲解了,度娘那会做的比我详细。安装包可以在最下面的联系方式找我要,现在开始进入主题。
    打开Unity以后,我们先新建工程,这里要注意,一定要一个汉字都不能有,一定!避免出现不必要的Bug。
    这里写图片描述

    打开工程以后,就可以看到我们的Unity的操作界面。

    这里写图片描述

    这个我用着不方便,按照我个人的习惯,变成了这样的布局,当然这是个人喜好,可以不用模仿我。

    这里写图片描述

    那么这里每个模块的每个功能我就不一一介绍了,具体功能介绍我推荐给大家几本书,以供参考。

    这里写图片描述

    这里写图片描述

    首先看这里

    这里写图片描述

    快捷键从左至右为QWERT,功能为
    Q:调整视图
    W:移动工具
    E:旋转工具
    R:缩放工具
    T:选择工具
    鼠标右键为旋转视图,鼠标中键等于按下Q的左键操作。

    现在,我们来创建一个GameObject来练习如何操作Unity3D。

    首先,创建一个Cube。

    这里写图片描述

    然后调整到MainCamera能观看到的范围内。

    这里写图片描述

    在这里我要介绍一下MainCamera,这个是游戏的主摄像机,也就是说我们玩游戏的视图都是这个东西拍摄下来的游戏引擎里的游戏对象。因为,场景没有光源,所以MainCamera看到的东西比较暗,那么我们为场景添加光源,然后选中这个Cube按F2重命名为Floor,并将Floor通过缩放工具变成我们需要用的地板。

    这里写图片描述

    这里写图片描述

    下面我们在Floor的上方再新建一个Cube,作为我们的主角,命名为Player。

    这里写图片描述

    现在我们点击Unity上方像播放似的那个按钮,就是运行游戏,可以法线并没有什么变化,现在我们给主角添加刚体。—-Rigidbody
    并运行游戏。

    这里写图片描述

    这里写图片描述

    可以看到我们的Player掉到了Floor上,因为我们添加了物理引擎。他可以模拟重力,模拟碰撞、、、等等。

    下面开始用代码让我们的Player动起来吧!

    首先先创建C#脚本文件。

    创建脚本前以防我们的工程文件会很乱,所以我们要新建一些文件夹,为我们的资源分类,我分了这些类,并且创建了一个PlayerMove的C#脚本。

    这里写图片描述

    这里写图片描述

    双击用VS2010打开脚本。

    这里写图片描述

    下面我们开始写移动的代码。

    public class PlayerMove : MonoBehaviour {
    
        //定义移动的速度
        public float MoveSpeed = 2f;
        //定义旋转的速度
        public float RotateSpeed = 0.01f;
    
    
        void Start () {
    
        }
    
        void Update () {
    
            //如果按下W或上方向键
            if(Input.GetKey(KeyCode.W)||Input.GetKey(KeyCode.UpArrow))
            {
                //以MoveSpeed的速度向正前方移动
                this.transform.Translate(Vector3.forward*MoveSpeed*Time.deltaTime);
            }
            if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
            {
                this.transform.Translate(Vector3.back * MoveSpeed*Time.deltaTime);
            }
    
            //如果按下A或左方向键
            if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
            {
                //以RotateSpeed为速度向左旋转
                this.transform.Rotate(Vector3.down * RotateSpeed);
            } 
            if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
            {
                this.transform.Rotate(Vector3.up * RotateSpeed);
            }
    
        }
    }

    把这个代码托给Player。

    这里写图片描述

    好了,运行游戏,你的Player已经可以移动了。

    这里写图片描述

    按下Ctrl+S保存场景,第一讲到此结束,未完待续。。。 。。。

    联系方式
    查看Aries的领英个人资料 查看Aries的个人资料

    QQ:531193915
    E_Mail:15210411296@163.com

    展开全文
  • Unity入门:第一个游戏

    万次阅读 多人点赞 2018-02-02 22:12:12
    游戏涉及了许多Unity的基本知识,用来入门很不错。 这篇博文并不讲述整个游戏的制作流程,如果您感兴趣,可以访问这里,如果访问遇到什么困难,在B站有一摸一样的视频。 这是完成以后的样子: 运行效果: ...

    Unity官网提供了详尽的文档和丰富的教学视频,昨天跟着视频做了一个简单的3d游戏“roll-a-ball”。游戏涉及了许多Unity的基本知识,用来入门很不错。

    这篇博文并不讲述整个游戏的制作流程,如果您感兴趣,可以访问这里,如果访问遇到什么困难,在B站有一摸一样的视频

    这是完成以后的样子:


    运行效果:


    作为个人小结,下面写一些做这个游戏的收获:

    1、什么是Unity?

    一款游戏引擎,至于什么是游戏引擎,这里不展开。

    2、下载和安装

    官网:Unity官网

    作为学习用途,下载personal版即可。

    3、熟悉Unity界面

    进入Unity后,将会看到这样的界面:


    上图将界面划分成了5部分,下面分别解释每部分的功能:

    (1)Toolbar

    上面的按钮有不同的功能,比如左侧的第一个按钮可以用来移动场景中的物体,第二个按钮用来进行平移变换,第三个按钮用来进行旋转变换等。

    (2)Hierarchy window

    顾名思义,这个部分显示的是“层次结构”,场景中的对象都会被列到这个窗口中。当我们新建一个Unity项目时,Unity就会自动为我们添加两个东西:Main Camera和Directional Light,一个是相机,一个是光照。Hierarchy window上面有一个create按钮,点击这个按钮,我们可以看到一个包含了空对象、2d,3d对象、UI、光照、相机等在内的菜单,在这里你可以点击你想创建的东西。

    (3)Scene view

    这是游戏的场景,我们可以通过调整右上角的坐标系图案来调整观察场景的位置。

    (4)Inspector window

    当我们选中一个对象,打开Inspector window,这个对象的信息,例如所在的位置,平移了多少等等都会在这个窗口显示,当然也可以用这个窗口来调整场景中的对象,例如为了编辑方便,一开始我们会使用transform中的reset,将对象放置在坐标原点(0,0,0)。Inspector window最下面有一个Add Component按钮,通过这个按钮可以给对象增加其它的component,例如添加一条C#脚本等。

    (5)Project window

    这个窗口显示的是这个游戏使用的资源,通常我们会在这里建立一些文件夹,例如Scenes文件夹专门保存场景,Materials文件夹专门保存材质,Scripts文件夹专门保存脚本等。Project window上有一个不起眼的create按钮,这个按钮很有用,例如我们可以点击create->folder来新建一个文件夹等等。

    事实上,这只是Unity界面一个最基本的布局,你可以自己拖动这些window或者view来将它们放置在自己喜欢的位置,也就是说,操作界面是可以个性化的。其实上面漏掉了一个很重要的view:game view,如下图所示:


    这个view的按钮就在scene view旁边,上图中我已经将它拖动到了scene view下面,这个视图显示的是我们的游戏最终呈现给用户的样子,制作好一个游戏后,可以点击Toolbar中间那个表示Play的按钮进行试玩,游戏的运行情况就显示在这个视图中。

    为了方便编辑,我们常把Scene view和Game view并列在一起,就像上图一样,这样,在用Play试玩调试的时候可以不用频繁切换视图,从而节省了时间。

    4、怎么理解游戏中的几个脚本?

    Unity会自动为每个新建的C#脚本生成void Start()和void Update()两个方法,第一个在第一帧,也就是游戏刚开始时调用,第二个在画面更新时调用(准确地说是在渲染每一帧之前被调用)。

    在这个游戏中我们会用到三个脚本:

    (1)CameraController.cs

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class CameraController : MonoBehaviour {
    	public GameObject player;
    	private Vector3 offset;
    
    	void Start () {
    		offset = transform.position - player.transform.position;
    	}
    	
    	void LateUpdate () {
    		transform.position = player.transform.position + offset;
    	}
    }
    脚本的作用是当Player移动时,让相机也随着移动。

    这里有一个问题:要达到类似的效果,为什么不直接把Main Camera设置成Player的孩子?

    (2)PlayerController.cs

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class PlayerController : MonoBehaviour {
    	public float speed;
    	public Text countText;
    	public Text winText;
    
    	private Rigidbody rb;
    	private int count;
    
    
    	void Start()
    	{
    		rb = GetComponent<Rigidbody>();
    		count = 0;
    		SetCountText();
    		winText.text = "";
    	}
    
    	void FixedUpdate()
    	{
    		float moveHorizontal = Input.GetAxis("Horizontal");
    		float moveVertical = Input.GetAxis("Vertical");
    		Vector3 movement=new Vector3(moveHorizontal,0.0f,moveVertical);
    		rb.AddForce (movement*speed);
    	}
    
    	void OnTriggerEnter(Collider other)
    	{
    		if (other.gameObject.CompareTag ("PickUp")) 
    		{
    			other.gameObject.SetActive (false);
    			count++;
    			SetCountText();
    		}	
    	}
    
    	void SetCountText()
    	{
    		countText.text = "Count:" + count.ToString ();
    		if(count>=12)
    		{
    			winText.text="You Win!";
    		}
    	}
    }

    这个脚本被添加到了叫做Player的小球上,Start函数用来做初始化,其中的getComponent用来获取刚体对象,也就是添加到叫做Player的小球上的那个RigidBody。为什么用FixedUpdate()不用Update()?因为FixedUpdate在做物理计算之前被调用,这个游戏中的碰撞属于physics的范畴,所以用FixedUpdate()。还有一个要注意的函数是OnTriggerEnter(),这个函数在对象碰到collider的时候会被触发,在这个例子中,我们给12个Pickup关联上了一个叫“PickUp”的Tag,当碰撞发生时如果发现Tag是PickUp,就deactivate这个PickUp(每个PickUp的is trigger需要勾选上)。教学视频中提到一个问题:除了要给PickUp的collider勾选is trigger,还要加上rigidbody(is kinematic),这是因为Unity计算所有collider的体积后把它们放在一个cache里,如果collier是静态的(static),这样做可以避免在每帧更新的时候重复计算,但是在我们这个游戏中,因为每次collider都在旋转,所以每次它的体积都会被重复计算,为了节省资源,可以把collider设置成动态的(dynamic=collider+rigidbody)。

    (3)Rotater.cs

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Rotator : MonoBehaviour {
    
    	
    	// Update is called once per frame
    	void Update () {
    		transform.Rotate (new Vector3(15,30,45)*Time.deltaTime);
    	}
    }
    这里要用的是Update而不是FixedUpdate(和物理无关)。

    5、其他

    (1)prefab

    类似模板一样,可以将需要复用某个逻辑的一堆对象放到prefab文件夹中,这就可以对整体进行编辑、修改了。

    (2)快捷键

    例如ctrl+D用来duplicate

    (3)有不懂的查文档!!!

    展开全文
  • 你将学到一款十分流行的游戏制作引擎——Unity,它是一个跨平台的游戏开发软件,只要你的游戏在电脑上制作完成,便可以同时发布成Android版和iOS版,甚至发布成Web版。 在这门课程中你将学习到:游戏对象的创建、...
  • 2019年Unity学习资源指南[精心整理]

    千次阅读 2019-07-14 14:02:23
    进入一个领域,最直接有效的方法就是,寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括: 1、主流的学习社区与网站。 2、该领域的知名大牛与热心分享的从业者。 3、如何有效的激励自己...

    前言

    进入一个领域,最直接有效的方法就是,寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括:

    • 1、主流的学习社区与网站。
    • 2、该领域的知名大牛与热心分享的从业者。
    • 3、如何有效的激励自己持续学习—主要是动手实践

    因此,总结一下Unity相关学习资源,可能有些不足,欢迎大家指正修改,一起成长!

    授人与鱼,不如授人与渔!

    2019年Unity学习资源指南(本文相关资料下载)
    视频预览介绍(感谢群友:F'(EX) 提供录制):bilibili视频地址链接

    目录

    一、Unity官方学习资源

    1、【Unity官方网站】
    2、【Unity官方文档】
    3、【Unity官方教程】
    4、【Unity GitHub】
    5、【Unity Connet】
    6、【Unity WiKi】
    7、【Unity 官方微信公众号】

    二、Unity 基础篇—— C# 学习资源

    1、【C#官方文档】
    2、【C#推荐书籍】
    3、【C#学习视频】

    三、Unity 入门篇—— Unity编辑器学习资源

    1、【Unity官方文档】
    2、【Unity推荐书籍】
    3、【Unity学习视频】

    四、Unity 进阶篇——Unity内置系统与常用插件学习资源

    1、【UI系统:UGUI】
    2、【动画与导航系统】
    3、【常用插件】

    五、Unity 强化篇——编程强化学习资源

    1、【C# 编程强化】
    2、【C# 数据结构】
    3、【3D数学基础】
    4、【编程设计模式】

    六、Unity 拓展篇——学习资源(可选择性学习)

    1、【客户端资源管理与更新技术】
    2、【游戏AI人工智能】
    3、【游戏图形编程】

    七、Unity 知名博主博文——学习资源

    1、【知名博主】
    2、【知名博文】
    3、【优质分享】

    八、Unity 网络课程——学习资源

    1、【SIKI学院】
    2、【游戏蛮牛】
    3、【其他学习网站】

    九、Unity 优秀开源项目——学习资源

    1、【游戏框架】
    .......

     

    一、Unity官方学习资源

    1、【Unity官方网站】https://unity3d.com/cn

    官方网站提供了,编辑器下载学习社区资源下载商店

    2、【Unity官方文档】https://docs.unity3d.com/Manual/index.html

    Manual:介绍相关编辑器功能与使用技巧,可以搜索查阅相关功能使用方法。
    Scripting API : 脚本API介绍,说明相关脚本接口的使用方法。

    3、【Unity官方教程】https://unity3d.com/cn/learn/tutorials

    主要是英文的教程,适合英语较好的食用(后续内容会介绍中文相关教程)。

    4、【Unity GitHub】GitHub:Unity-Technologies

    Unity官方技术源码管理GitHub,如果你还没有使用过,或者没有注册,赶紧的快去注册一个,这是个技术人的交流社区,你可以从中找到许多优秀的开源项目,提升你的开发技巧与开发效率。(后续内容会介绍相关知名的开源项目)。

    5、【Unity Connet】官方交流平台: https://connect.unity.com/

    在这里你可以,寻找你的游戏开发 人才、组建你的开发小组、发布项目、发布职位、参与官方活动、加入交流频道

    官方技术分享直播:

    6、【Unity WiKi】Unity维基社区: http://wiki.unity3d.com

    英文网页,可以使用英文搜索相关Unity的解决方案。

    7、【Unity 官方微信公众号】

                                 Unity官方平台

                           Unity官方开发者社区

     

    内有丰富的精彩好文,值得学习参考。

    二、Unity 基础篇—— C# 学习资源

    1、【C#官方文档】C# 指南:https://docs.microsoft.com/zh-cn/dotnet/csharp

    学习任何东西,最有效,最高效的方法就是查看官方的文档,毕竟这是他们写的东西,没有谁比他们更熟悉了

    2、【C#推荐书籍】

    《C# 6.0本质论》纸质书籍地址【电子版下载】

                                 C#本质论 6.0

     

    《Head First C#》(第三版 中文版)纸质书籍地址

     

                               Head First C#


    【其他C#学习书籍电子版下载】

     

    3、【C#学习视频】

    SIKI:C#初级教程 (2015版)【视频课程下载】
    SIKI:C#中级教程 (2015版)【视频课程下载】

    ——也可关注SIKI学院微信公号,回复100获取C#学习资源,当然也有其他的学习资源哦(小声点)

                          SIKI学院

     

    三、Unity 入门篇—— Unity编辑器学习资源

    1、【Unity官方文档】Unity Manual 文档 : https://docs.unity3d.com/Manual

    官方文档为英文文档,虽然难以下咽,但仍要坚持阅读,就算是一边打开翻译网页,也要去阅读,使用Google的同学,可以右键一下,虽然机翻很渣,但总比没有翻译好

    2、【Unity推荐书籍】

    《Unity5.X从入门到精通》纸质书籍地址【电子版下载】

     

                    Unity5.X 从入门到放弃(精通)

     

    《Unity 5 权威讲解》纸质书籍地址

                             Unity5 权威讲解


    【其他Unity学习书籍电子版下载】密码:4hh7

     

    3、【Unity学习视频】

    【复旦大学Coursera】基于 Unity 引擎的网络游戏设计与开发【BiliBili热心UP】

    【网校课程】零基础入门Unity - 古迹探险(基于Unity2017)(PS:免费的)

     


    四、Unity 进阶篇——Unity内置系统与常用插件学习资源

    1、【UI系统:UGUI】

    2、【动画与导航系统】

    ——相关学习资源可以到下方的推荐的学习网站寻找!(自己动手,丰衣足食!

    3、【常用插件】


    五、Unity 强化篇——编程强化学习资源

    1、【C# 编程强化】

    SIKI:C#高级教程 (2015版)【视频课程下载】密码:fksz

    2、【C# 数据结构】

    网易云课堂(浙大版)数据结构

    中国大学MOOC(西北大学)数据结构

    简书:Unity中利用C# 学习实践 数据结构笔记——GitHub源码工程(Unity2017.4.7f1)

    SIKI:C# 数据结构 (2015版)【视频课程下载】密码:lcjc

    3、【3D数学基础】

    在线课程:3D数学基础:Unity游戏开发

    4、【编程设计模式】

    《设计模式与游戏完美开发》纸质书籍地址

                  设计模式 游戏完美开发

     


    六、Unity 拓展篇——学习资源(可选择性学习)

    1、【客户端资源管理与更新技术】

    • 编辑器扩展

    • AssetBundle

    • 热更新(sLua,toLua,xLua,ILRuntime)

    xLua入门视频

    2、【游戏AI人工智能】

    3、【游戏图形编程】


    七、Unity 知名博主博文——学习资源

    1、【知名博主】


    2、【知名博文】

    3、【优质分享】


    八、Unity 网络课程——学习资源

    1、【SIKI学院】:http://www.sikiedu.com

    丰富的免费学习资源,老师授课思路清晰,教学资源整理的十分有条理,值得认真学习,还有完整的学习计划——A计划

                                                                 A计划


    Unity游戏开发视频教程目录-SIKI老师精心整理(内含大量优质课程下载地址)

     

    2、【游戏蛮牛】:http://www.manew.com

    签到领取蛮牛币,在论坛可凭币下载学习资源,游戏场景,模型资源等!

     

                    游戏蛮牛

    3、【其他学习网站】


    九、Unity 优秀开源项目——学习资源

    1、【游戏框架】

    Strangeioc

    官网——http://strangeioc.github.io/strangeioc/
    GitHub——https://github.com/strangeioc/strangeioc

                                                             Strangeioc


    Strangeioc中文教学视频

     

    QFramework

    官网—— http://qframework.io
    GitHub——https://github.com/liangxiegame/QFramework

                                                   QFremework


    作者:凉鞋的笔记 框架搭建教程
    作者的教学视频:
    UniRx 第一季 入门精讲
    UniRx 第二季 操作符篇
    UniRx 第三季 深入理解
    大家可以支持一下作者的辛苦付出!

     

    Game Framework

    官网 —— http://gameframework.cn
    GitHub——https://github.com/EllanJiang/GameFramework

                   GameFramework

     

    CatLib:Unity全栈框架

    官网——http://catlib.io
    GitHub——https://github.com/CatLib/Core

                                                  CatLib

     

    FairyGUI:超强 UI 编辑器

    官网——http://www.fairygui.com
    GitHub——https://github.com/fairygui

                    FairyGUI


    官方推荐SIKI学院入门教学——强大的UI编辑器 - FairyGUI入门教程
    官方推荐SIKI学院案例教学——狼人杀面杀APP(基于FairyGUI)

     

    ET

    前后端采用C#,基于ILRuntime 热更代码,前后台全热更方案

    ET是一个开源的游戏客户端(基于unity3d)服务端双端框架,服务端是使用C# .net core开发的分布式游戏服务端,其特点是开发效率高,性能强,双端共享逻辑代码,客户端服务端热更机制完善,同时支持可靠udp tcp websocket协议,支持服务端3D recast寻路等等

    官网:可惜目前没有,不过GitHub上有热心群友分享的学习笔记,满满的干货!
    GitHub——https://github.com/egametang/ET

    没有官方Logo,那就来个ET电影海报吧:)

     

                                                       ET


    后记

    就分享这么多吧,欢迎大家交流分享学习,同时培养自己的三种学习成长必备能力

    • 信息与资源的搜集获取能力

    • 信息与资源的分析筛选能力

    • 信息与资源的管理利用能力

    欢迎加入 Unity学习资源交流群:954131591( 狗屋是一生一屋狗药 ),共同学习交流!

                                                 Unity学习资源交流群


    感谢SIKI老师创建



    作者:lijianfex
    链接:https://www.jianshu.com/p/c65e2837290f
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • Unity3D游戏引擎最详尽基础教程

    万次阅读 2018-06-27 15:23:06
    我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?首先是因为专业,Unity3D非常强大,用它创建一个类似MiniGore这样的3D平面射击游戏简直轻而易举,而就连使命召唤这样的大型3d游戏,如果素材得当也不在话下。二是...

    我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?首先是因为专业,Unity3D非常强大,用它创建一个类似MiniGore这样的3D平面射击游戏简直轻而易举,而就连使命召唤这样的大型3d游戏,如果素材得当也不在话下。二是因为易用,他的操作非常容易,而使用的脚本语言又是JavaScript或者C#,不仅非常简单,也让各个种类的程序员都非常容易上手。再次,就是因为免费,如果你不使用Pro或者Mobile的内容的话,Unity3d就是完全免费的。还有就是对3D模型的兼容性,几乎任何3d模型都可以导入到unity中,可以说是一个很方便的特性。

     

    今天,我就来讲讲Unity3D的基础操作,这可以说是一个新手必读吧,读完之后,你一定会惊叹,原来做一个游戏这么简单。

     

    第一节 加入重力

     

    我们先打开Unity3d,新建一个场景(Scene),新建的时候应该会有对话框要求你加入哪些Asset Package,记得选择Physics Material,因为后面我们一定要用的哦亲。

     

    如果创建的时候没加,你可以再后来的Asset菜单里加:

     

     

    之后,我们建立一个Cude,调整一下x和z的大小,我这里调成了25,让它变成一个地板,你也可以放一个texture上去,看起来更加真实,我这里从简,再创建一个sphere,在component中选择Physics中的RigidBody,前提是选中你的sphere物体,之后会看到这个Sphere的inpector中加入一个component叫做RigidBody,调整好Camera运行一下,你就会发现Sphere受到重力的影响自动掉落到地板上。

     

     

    之后,通过我们之前引入的Physics Materials资源包,你还可以选择这个物体的物理性质,我这里选择Bouncy(跳跳),落下之后,这个物体就会蹦来蹦去的,呵呵

     

     

     

    第二节 检测碰撞

     

    下面我们通过简单的JavaScript语句来检测碰撞,这在制作游戏中是很有用的,比如说检测到子弹和敌人的碰撞之后,可以使用我们后来要讲到destory命令消灭敌人。

     

    这次我们新建一个Terrain项目,在用Grass贴图来覆盖住它,如果你找不到贴图的话,记得在Asset菜单里找找,看看哪些资源你还没有引入进去。

     

    然后再加入一个Cube项目,我这里叫做PlayerCube,为他加上重力,之后选择bouncy性质,然后我们再新建一个Cude,调整y和z的值让他变成一堵墙,放置好,命名为Wall,别忘了给Terrain改名为Terrain,

     

    之后我们在Asset菜单中建立一个JavaScript项目,改名为CollisionDetect,双击打开,如果你使用的是Unity 3.5的话,就会打开MonoDev,这是一个新工具还是很好用的,在其中新建一个函数,别管Start和Update函数,我们待会会讲。

     

    加入以下代码:

     

    function OnCollisionEnter(theCollision : Collision){
    
     
    
    if(theCollision.gameObject.name=="Terrain"){
    
     
    
    Debug.Log("Hit terrain");
    
     
    
    }else if(theCollision.gameObject.name=="Wall"){
    
     
    
    Debug.Log("Hit the wall");
    
     
    
    }
    
     
    
    }
    

     

    如果看不懂这些代码的话,也没关系,JavaScript是最好学的编程语言,Google一下吧,保存这个JS文件,然后拖到我们的PlayerCube上。

     

    这时候我们运行,就会看到PlayerCube到处蹦,碰到Terrain的时候,控制台就会显示Hit Terrain,碰到wall的时候就会显示Hit the wall。

     

    第三节  检测用户输入

     

    下面我们来讲一下如何检测用户的键盘和鼠标的操作。

     

    就用我们上次的那个场景,这次我们给PlayerCube加上我们可以控制的动作。就是通过“wasd”或者上下左右键来控制移动。

     

    请注意,如果要使用这里使用的方法来控制移动,那么所控制的物体不能够是一个物理世界的物体,也就是说你要把RigidBody这个component删掉,如果你想要在物理世界里移动物体的话,你就需要我们在下面会讲到的力(force)。

     

    首先我们新建一个JavaScript文件,这里命名为InputDetect吧,输入下面的代码:

     

    #pragma strict
    
     
    
    var Player : GameObject;
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    Player = GameObject.Find("PlayerCube");
    
     
    
    if(Input.GetKey(KeyCode.W)){
    
     
    
    Debug.Log("Hit w");
    
     
    
    Player.transform.Translate(Vector3.forward * 2);
    
     
    
    }else if(Input.GetKey(KeyCode.S)){
    
     
    
    Debug.Log("Hit s");
    
     
    
    Player.transform.Translate(Vector3.back * 2);
    
     
    
    }else if(Input.GetKey(KeyCode.A)){
    
     
    
    Debug.Log("Hit a");
    
     
    
    Player.transform.Translate(Vector3.left * 2);
    
     
    
    }else if(Input.GetKey(KeyCode.D)){
    
     
    
    Debug.Log("Hit d");
    
     
    
    Player.transform.Translate(Vector3.right * 2);
    
     
    
    }
    
     
    
     
    
    }
    

     

    这时,我们运行这个游戏,就可以通过“WASD”来控制PlayerCube的移动了。

     

     

    第四节 使用Prefab复制和控制物体

     

    我们可以直接把Prefab看做是个妈,她能生好多小孩,如果妈妈的DNA变了,小孩的跟着变,就是说你可以用Prefab创建物体,然后通过这个Prefab修改所有这类物体的性质,这对于批量生成的敌人或者NPC来说很有用。

     

    首先,先创建一个Prefab,我这里命名为“Mother”,之后新建一个Sphere物体,当然你也可以建一些其他的物体,之后给这个Sphere加上你想要的性质,我加入了RigidBody和Bouncy,之后将Sphere拖到Mother上,你会发现mother变蓝了,之后你就可以随意拖一些mother物体到屏幕上去,你会发现所有的Prefab创建出的物体在清单上都是蓝色的,说明他们都有共同的性质。

     

     

    当然,作用于一个Prefab上的脚本也会作用到它的子物体上去。

     

    第五节 使用Destroy命令消灭物体

     

    我们游戏中怎么能够没有敌人呢?有敌人就得能够消灭他们,这时候,我们就会使用Destroy命令了。

     

    在这里,我们使用上次Mother生出来的小球球作为敌银,一旦我们的PlayerCube碰撞到了小球的话,就是用Destroy让小球消失。

     

    新建一个JavaScript脚本,输入以下代码:

     

    #pragma strict
    
     
    
    var mother : GameObject;
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    }
    
     
    
    function OnCollisionEnter(theCollision : Collision){
    
     
    
    mother = GameObject.Find("Mother");
    
     
    
    if(theCollision.gameObject.name=="Mother"){
    
     
    
    Debug.Log("Hit mother");
    
     
    
    Destroy(mother);
    
     
    
    }
    
     
    
    }
    

     

    这段代码很好懂吧,就是检验碰撞,然后销毁碰撞到的Mother物体,别忘了把Destroy的JavaScript文件拖到PlayerCube上去。运行一下,就可以看到碰撞到的物体都被消灭了。

     

     

    第六节 使用Instantiate命令创造物体

     

    我们直接在界面创造的物体都只是会在界面被初始化的时候加载,那么,如果为了节约内存或者其他什么事情,我想要在游戏过程中添加物体,那该怎么办呢?你猜对了,就是用instantiate命令。

     

    这个命令就是英文实例化的意思,下面我们给碰撞之后消失的mother物体继续初始化一些,也就是说消灭了一些,又来了一大波···

     

    为什么非要用mother呢?因为只有拥有Prefab的物体才能够使用这个命令哦亲。

     

    function Update () {
    
     
    
    var instance : GameObject = Instantiate (PreFab,transform.position,transform.rotation);
    
     
    
    }
    

     

    注意:这样的话,每次刷新一帧都会出现一个新的mother物体,你的内存也许会受不了哦,更合理的方法是按下空格键,然后出现一个新的物体,你可以自己做吗?试试看

     

    你可能已经注意到了,每一个初始化的脚本都会默认有两个函数,就是:

    Update()函数 —— 每刷新一帧都会检查并执行

    Start()函数 —— 只在场景初始化的时候执行

     

    第七节 使用Timer计时器

     

    这次,我们要让一个计时器倒数,倒数到0的时候创建一个mother物体,来看Javascript代码吧:

     

    #pragma strict
    
     
    
    var myTimer : float = 5.0;
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    if (myTimer >= 0){
    
    myTimer -= Time.deltaTime;
    
    guiText.text=(""+myTimer);
    
    }
    
     
    
    if (myTimer <= 0){
    
    guiText.text = ("Done");
    
    }
    
     
    
    }
    

     

    把这个脚本拖到GUItext控件上,你会发现我们所期待的效果。

     

     

    第八节 让物体动起来

     

    其实让物体行动的技巧,我们已经会了,不是吗?

     

    如果你觉得不是的话,没有认真的看上面的文章哦,我就再给你讲一次吧。

     

    请特别注意,这种方法不适合物理世界的物体,如果向移动物理世界的物体,请看下一节:

     

    创建一个Cylinder物体,之后将下面的脚本附着在上面。

     

    #pragma strict
    
     
    
    var myObject : GameObject;
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    myObject.gameObject.Find("Cylinder");
    
    myObject.transform.Translate(Vector3(0,0,1));
    
     
    
    }
    

     

    第九节 使用物理世界的力

     

    这里是我们讲移动物体的重点,因为大部分的物体移动都是在物理世界完成的,而如果想要在物理世界移动东西,除了position和rotation的移动之外,就是使用“力”了,在高中学过经典物理学的人都知道,要使物体用移动,木有力是不行的,那么我们就开始吧,再新建一个什么物体,我新建了一个Capsule。

     

    之后,我会在这个物体的上方加一个力,让它用力的向下飞,触碰到地之后,通过bouncy这个性质再弹回来。新建一个JavaScript文件,就叫做Force吧,加入如下代码:

     

    #pragma strict
    
     
    
    var Power : float = 500.0;
    
     
    
    function Start () {
    
     
    
    rigidbody.AddForce(Vector3(0,Power,0));
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    }
    

     

    运行之后,会发现capsule其实是个很有幽默感的物体。

     

     

    第十节 使用贴图和材质

     

    贴图和材质能够使你的虚拟3D世界看起来更加真实,不幸的是,需要大量在PS和AI中的设计工作,最近我一想到要打开PS就有点烦···呜呜。

     

    闲话少说,我已经做好了一个贴图,怎么使用在材质上呢?之后我们怎么才能通过材质使用到其他物体之上呢?

     

     

    就像你看到的一样,我是直接拖进去的···

     

    之后我们从新建菜单中选择Material这一项,之后选中material,将贴图拖进material的贴图选框里,之后,就可以拖动这个Material赋给任何物体了。

     

     

    第十一节 使用声效和音乐

     

    音效和音乐对于一个游戏来说是非常重要的,一个寂静无声的世界是无聊的,而且不真实,什么?你说声效和音乐是一个东西?那你就错了,声效是,比如说发射子弹的声音,什么东西爆炸的声音等等,而音乐则是背景音乐什么的,不一样的亲。

     

    对于音乐来说,往往使用立体声音乐,而对于生效来说,我们随便使用一个简单的音乐文件就可以了。

     

    想要在Unity3D中播放音乐,你需要两样东西,一个是监听器,一个是音乐源,监听器是Camera的一个组件,所以你不用担心,你唯一需要增加的就是音乐源。

     

    直接将项目中的音乐拖放到Audio Source项就可以播放,但是如果我们想要在某个特定的点上 播放音乐该怎么办呢?答案就是,写一个脚本,新建一个脚本,输入如下代码:

     

    #pragma strict
    
     
    
    var myClip : AudioClip;
    
     
    
    function Start () {
    
     
    
    AudioSource.PlayClipAtPoint(myClip,transform.position);
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    }
    

     

    之后将这个脚本拖放到我们的物体上,最后,将音频文件拖放到AudioSource选项框中。

     

    第十二节 使用关节

     

    关节在3D游戏之中的应用非常广,主要在于物理世界的重力影响,下面我们就通过关节来制作一个钟摆。

     

    这次我们新建一个场景,松了一口气?刚才的场景是不是太乱了?你做的时候可以整理一下嘛,呵呵

     

    新建一个cube作为地面,之后一个cube放在上空作为摆垂,之后用几个capsule分别用component中的fixed joint连接起来,之后最上面的那个capsule与世界相连,使用Hinge Joint,这样的话,他会默认与世界相连,不用担心,看图

     

     

     

    第十三节 使用Axes

     

    在Edit – Project Setting – input 中可以查看各种形式的input,这些input方法在unity中被叫做Axes。

     

    我们创建一个JavaScript,叫做GetAxes,输入以下内容:

     

    #pragma strict
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    var Honriz : float = Input.GetAxis("Honrizontal");
    
     
    
    Debug.Log(Honriz);
    
     
    
    }
    

     

    在拖放脚本之后,运行这个场景,看看控制台输出了什么,你就明白了。

     

     

    第十四节 使用触发器

     

    触发器一般用于检测一个物体是否处于一个空间内,他是怎么做到的呢?

     

    首先,他创造一个大的物体,之后将他的randerer属性去掉,他就隐形了,这样,我们再把他的isCollide属性去掉,他就不会发生碰撞了,之后,我们只需要用脚本检测物体是否与这个物体碰撞就可以了。

     

    我们新建一个场景,做一个地板,再做一个底座,叠加起来,再在他们的上空做一个方块,设置rigidbody属性,将底座设置成为我们刚才说的那种隐形的状态,之后新建一个JavaScript脚本,输入代码

     

    #pragma strict
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    }
    
     
    
    function OnTriggerEnter (myTrigger : Collider) {
    
     
    
    if(myTrigger.gameObject.name == "box"){
    
    Debug.Log("Hit");
    
    }
    
     
    
    }
    

     

    按下运行,会发现可以检测出Hit。

     

     

    第十五节 使用GUI

     

    其实我们已经学过了如何使用GUI text,不信,我们就用屏幕上的字代替我们在上面的程序中的Debug.Log现实的内容。

     

    你自己能做吗?

     

    试试看吧,一个下午写了这么多,有点累。

     

    一定要在Unity中加入一个GUI Text,运行一下,就会发现屏幕上的GUI Text会随着你设定的的内容而变化了。

    失败是什么?没有什么,只是更走近成功一步;成功是什么?就是走过了所有通向失败的路,只剩下一条路,那就是成功的路。
    展开全文
  • 一、Unity的下载安装 1.打开网址:https://unity3d.com/cn/,注册并登陆,点击“获取Unity” 2.点击“Try Personal” 3.点击“Download Installer” 4.双击运行并安装 二、创建项目 1.在弹出的窗口中选择...
  • 一、Unity3D基础

    千次阅读 2017-12-31 19:59:14
    Unity界面布局
  • Unity入门

    2017-11-11 18:14:37
    本人Unity使用5.4.2版本,之前毕业设计用Unity4.2版本做了一个宠物小精灵的对战游戏,现在Unity发展很迅速,有专门的2D,VR等制作工具了,现在从头来学习UnityUnity的魅力在于操作界面可视化,上手容易,大家可以...
  • [Packt Publishing] Unity 入门教程 (英文版) [Packt Publishing] Getting Started with Unity (E-Book) ☆ 图书概要:☆ Learn how to use Unity by creating your very own "Outbreak" survival game while ...
  • Unity入门官方案例---Survival Shooter

    千次阅读 2018-09-08 18:16:06
    介绍一下接触到的好的Unity官方作品。 Survival Shooter 游戏简介:  该小游戏是生存类小游戏,在一个小孩子房间中,每隔固定时间会生成某种怪物来追击玩家,玩家需要打死这些怪物,同时尽量躲避,避免被伤害...
  • 本套课程是Unity3D入门系列课程第一套。在这套课程中我们将会完成 从Unity3D的下载安装 到 完成案例:2048的开发,其中包括, 窗口介绍, c#基础知识, 脚本基础, uGui入门, 2048的...
  • Unity入门案例-Tanks坦克大战

    千次阅读 2018-01-11 20:36:27
    这是我的第一个Unity项目精简版的坦克大战看着siki视频学着做的历时一天半。 游戏描述: 游戏由2个玩家控制,每个玩家可以控制坦克前进后退左转右转和攻击,每个玩家有100hp基础血量每次攻击随机造成10-20点伤害。...
  • 软件准备,楼主之前学习了的图形学,结果一放就放到现在,感觉用不出来,拿MFC做游戏?还是拿opengl 做引擎。...所以的,我找到了unity3d。本人版本为4.6.懒得下载最新,此时最新已经5.1. 建模: 建
  • unity入门

    2017-11-23 12:51:58
    1.unity的安装与破解 2.vs开发工具的安装与破解 3.新建我们的第一个工程
  • 老孙的游戏课:第1篇 Unity入门 在大学混了三十余年,不敢说自己优秀,但...
  • Unity入门基础入门PPT

    2019-04-02 15:00:13
    U3D入门PPT自制,可供初学者了解U3D,以及大家教学示范使用 ************************************************************************
  • Unity Shader入门精要

    2018-03-31 12:17:51
    Unity Shader入门精要 Unity Shader入门精要 Unity Shader入门精要Unity Shader入门精要
  • Unity 2D 入门

    万次阅读 多人点赞 2017-07-14 13:34:43
    原文:Introduction to Unity 2D 作者:Sean Duffy 译者:kmyhy 3/15/17 更新说明: 升级至 Unity 5.5。Unity 是一个非常流行和强大的游戏引擎,它支持众多的平台和设备。尽管 3D 游戏最近火热,大部分手机游戏、...
  • 思路:通过对时间的计算,每隔一段时间让物体旋转,实现来回移动。  float TranslateSpeed = 0.02f;  float TranslateSpeedTime = 0.1f;  void Update () { ... TranslateSpeedTime += 0.1f;...
  • 蓝鸥Unity入门Mathf类学习笔记
1 2 3 4 5 ... 20
收藏数 14,451
精华内容 5,780
关键字:

unity入门