unity3d如何运行demo_unity3d demo - CSDN
  • 众所周知,Unity3D是一个能够实现轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎。在现有的版本中,其强大的游戏制作功能已经达到和其他顶级游戏引擎媲美的地步。但是 其制作并不如想象中的困难。...

    众所周知,Unity3D是一个能够实现轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎。在现有的版本中,其强大的游戏制作功能已经达到和其他顶级游戏引擎媲美的地步。但是 其制作并不如想象中的困难。本文就带您走进unity的世界,并且看看第一个游戏demo是什么样的。

    AD:

    众所周知,Unity3D是一个能够实现轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎。在现有的版本中,其强大的游戏制作功能已 经达到让人瞠目结舌的地步。尤其是它在3.0版本里面制作的那款第一人称战争游戏,画质效果丝毫不逊色于当下十分流行的《穿越火线》、《战地之王》等主流 第一人称射击游戏。下图为Demo中的显示效果:

    1.JPG

    看到如此绚丽的效果,让我马上走进精彩的Unity3D世界吧!首先要下载Unity3D,在官网上就可以完成。
    Unity3D的官方网站:http://unity3d.com
    Unity3D的下载地址:http://unity3d.com/unity/download/
    下载好之后,必须要到官方网站上注册一个邮箱,才能获得30天的试用时间。试用后如果您对这款软件满意,还可以在购买后继续使用。当然,如果您购买了Pro版本的Unity3D,将会获得更多的功能。
    第一章Unity3D的基本界面介绍

    Unity3D的基本界面非常简单,几个窗口就可以实现几乎全部的编辑功能。主界面如图1.1所示:
    2.JPG

    场景面板
    :该面板为Unity3D的编辑面板;您可以将您所有的模型、灯光、以及其他材质对象拖放到当前场景中。构建游戏中所能呈现的景象。
    动画面板:与场景面板不同,该面板是用来渲染场景面板中的景象的。该面板不能用作编辑,但却可以呈现完整的动画效果。显示的内容取决于场景摄像机的设置。
    层次清单栏:该面板主要功能是显示放在场景面板中的所有的物体对象。
    项目文件栏:该面板主要功能是显示该项目文件中的所有资源列表。除了模型、材质、字体等,还包括该项目的各个场景文件。
    对象属性栏:该面板栏会呈现出任何对象的固有属性,包括三维坐标、旋转量、缩放大小、脚本的变量和对象等等。
    场景调整工具:可以改变您在编辑过程中的场景视角、物体世界坐标和本地坐标的更换、物体的法线中心的位置,以及物体在场景中的坐标位置,缩放大小等等。

    菜单栏:接下来我重点介绍一下菜单栏。

    菜单栏中包含有八个菜单选项:分别是File【文件】、Edit【编辑】、Assets【资源】、GameObject【游戏对象】、Component【组件】、Terrain【地形】、Window【窗口】、Help【帮助】。

    每个菜单选项又有自己的子菜单,总结如下:

    1、File【文件】

    3.JPG

    名称
    说明
    New Scene 创建新的场景。就像是游戏中的一个一个的场景一样,Unity3D为用户提供了方便的场景管理,用户可以随心所欲的创建出自己想要的场景。然后再把每个场景链接起来组成一个完成的游戏。

    Open Scene 打开一个已经创建的场景
    Save Scene 保存当前场景
    Save Scene as 当前场景另存为
    New Project 新建一个新的项目工程。用户想要制作出自己的游戏,第一步就是创建一个属于这个游戏的工程,这个工程是所有元素的基础。有了工程之后,用户就可以在这个工程里面添加自己的场景。
    Open Project 打开一个已经创建的工程
    Save Project 保存当前项目
    Build Setting 项目的编译设置。在编译设置选项里面,用户可以选择游戏所在的平台及对工程中的各个场景之间的管理。可以添加当前的场景加入到工程的编译队列当中。其中的Player Settings选项中可以设置程序的图标,分辨率,启动画面等。
    Build & Run 编译并运行项目
    Exit 退出Unity3D

    2、Edit【编辑】

    4.JPG

    名称
    说明
    Undo 撤销上一步操作
    Redo 重复上一步动作
    Cut 剪切
    Copy 复制
    Paste 粘贴
    Duplicate 复制并粘贴
    Delete 删除
    Frame Selected 选择一个物体后,使用此功能可以把视角调到观察这个选中的物体上
    Find 在资源区可以按资源的名称来查找
    Select All 可以选中所有资源
    Preferences 选项设置。对Unity3D的一些基本设置,如:选用外部的脚本编辑,皮肤,各种颜色的设置。以及一些用户基本的快捷键的设置。
    Play 编译并在Unity3D中运行程序
    Pause 停止程序
    Step 单步执行程序
    Load Selection 载入所选
    Save Selection 保存所选
    Project Settings

    项目设置。其中包括输入设置,标签设置(对场景中的元素设置不同类型的标签,方便场景的管理),音频设置,运行的时间的设置,用户设置,物理设置(包括重 力,弹力,摩擦力等),品质设置(这个比较重要,用户在这个选项里面可以设置工程默认的渲染品质),网络管理,编辑器管理等

    Render Settings 渲染设置。如果觉得整体画面的色彩质量不尽如人意,可在此处进行调节
    Graphics Emulation 图形仿真。主要是配合一些图形加速器的处理
    Network Emulation 网络仿真。可以选择相应的网络类型进行仿真
    Project Settings 项目设置。其中包括输入设置,标签设置,音频设置,运行的时间的设置,用户设置,物理设置,品质设置,网络管理,编辑器管理等。
    Snap Settings 临时环境,或理解为快照设置。

    3、Assets【资源】

    5.JPG

    名称
    说明
    Reimport 重新导入资源
    Create 创建功能。可以用来创建各种脚本,动画,材质,字体,贴图,物理材质,GUI皮肤等
    Show In Explorer 打开资源所在的目录位置
    Open 打开选中文件
    Delete 删除选中的资源文件
    Import New Asset 导入新的资源
    Refresh 刷新,用于导入资源包之后
    Import Package 导入资源包。当创建项目工程的时候,有些资源包没有导入进来,在开发过程中有需要使用,这时可以用到导入资源包的功能
    Export Package 到处资源包
    Select Dependencies 选择依赖项
    Reimport 全部重新导入
    Sync MonoDevelop Project 同步开发项目

    4、GameObject【游戏对象】

    6.JPG

    名称
    说明
    Create Empty 创建一个空的游戏对象。可以对这个空的对象添加各种组件,即各种属性。在Component里面会讲到
    Create Other 创建其他类型的游戏对象。这里面包括了很多内容,基本上囊括了Unity3D所支持的所有对象。其中有粒子系统,摄像机,界面文字,界面贴图,3D的文字效果,点光源,聚光灯,平行光,长方体,球,包囊,圆柱体,平面,表面,音频混音区域,树,玩偶,风域等
    Center On Children 这个功能是作用在父节点上的,即把父节点的位置移动到子节点的中心位置
    Make Parent 选中多个物体后,点击这个功能可以把选中的物体组成父子关系,其中在层级视图中最上面的那个为父节点,其他为这个节点的子节点
    Apply Change To Prefab 应用变更为预置
    Move To View 这个功能经常用到,把选中的物体移动到当前编辑视角的中心位置,这样就可以快速定位
    Align With View 把选中的物体移动到当前编辑视角的中心位置,深度为0,即移动到和视角同一个平面上
    Align View To Selected 把编辑视角移动到选中物体的中心位置

    5、Component【组件】

    7.JPG

    名称

    说明
    Mesh 添加网格属性
    Particles 粒子系统。能够造出很棒的流体效果
    Physics 物理系统。可以使物体带有对应的物理属性
    Audio 音频。可以创建声音源和声音的听者
    Rendering 渲染
    Miscellaneous 杂项
    Scripts 脚本。Unity内置的一些功能很强大的脚本
    Camera-Control 摄像机控制

    6、Terrain【地形】

    8.JPG

    名称
    说明

    Creat Terrain 创建地形
    Import Heightmap-Raw 导入高度图
    Export Heightmap-Raw 到处高度图
    Set Resolution 设置分辨率
    Create Lightmap 创建光影图
    Mass Place Trees 批量种植树
    Flatten Heightmap 展平高度图
    Refresh Tree And Detail Prototypes 刷新树及预置细节

    7、Window【窗口】

    9.JPG

    名称
    说明
    Next Window 下个窗口
    Previous Window 前一个窗口
    Layouts 布局
    Scene 场景窗口
    Game 游戏窗口
    Inspector 检视窗口,主要指各个对象的属性,也可称为属性面板
    Hierarchy 层次窗口
    Project 工程窗口
    Animation 动画窗口。用于创建时间动画的面板

    Profiler 探查窗口
    Asset Server 源服务器
    Console 控制台

    第二章 Unity3D的简单预览

    每个Unity3D版本都会自带一个Demo源文件。在3.0的正式版中,自带的Demo就是网上展示的那款强大的射击游戏。在一般情况下,您只要第一次 打开Unity3D v3.0就会看见自带的那个Demo项目文 件了。但如果Unity3D并没有打开这个项目文件,你也可以在Unity3D里面的“File”菜单下点击“Open Project”选项,在“C:\Documents and Settings\All Users\Documents\Unity Projects”这个路径下找到项目文件夹“Bootcamp Demo”,选择并打开它。打开项目之后,在舞台场景面板中依然什么都没有显示的话,请在Project【项目文件栏】双击场景文件 1.JPG 。稍等片刻之后,该舞台场景的所有对象就可以导入到舞台场景之中。导入成功之后效果如图2.1所示:
    2.JPG

    点击一下中间的播放按钮 3.JPG 做一下测试(如果您的机器配置不是很高,可能等待的时间会稍长)。稍等片刻,您就可以在Game【动画面板】中看到一个正在运行的射击游戏了。
    在这个游戏场景中,您会看到比其他主流游戏还要细腻逼真的画面效果,例如各个物体的实时阴影。如图2.2所示:
    4.JPG
    当然如果您的机器配置较高,您还可以点击“Esc”键来将游戏画质进一步调高。调节界面如图2.3所示:
    5.JPG
    下面我们来看下调整画面效果前后的游戏画面对比,如图2.4.1和图2.4.2所示:
    6.JPG
    7.JPG
    我们很明显的就可以感觉到河水的效果以及场景阴影的效果都真实了许多。

    【责任编辑:Pockey TEL:(010)68476606】


    展开全文
  • unity3d在浏览器上访问展示demounity3d web player demo。 包括内容:UnityWebPlayerFull.exe、UnityObject2.js、jquery.min.js、test.unity3d
  • Unity3D实现简易的AR Demo AR(Augmented Reality),即增强现实技术,是一种实时地计算摄影机影像的位置及角度并加上处理相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动,实现真实...

    用Unity3D实现简易的AR Demo

    AR(Augmented Reality),即增强现实技术,是一种实时地计算摄影机影像的位置及角度并加上处理相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动,实现真实世界信息和虚拟世界信息“无缝”的集成。这种技术最早于1990年提出。随着现代电子产品运算性能的提升,增强现实的用途也越来越广,既可以用到医疗、军事模拟训练等严肃领域,也可以用来制作如miku AR等新颖有趣的应用软件。

    (宅在家也可以打开次元之门了( *︾▽︾)……..)

    miku AR效果展示

     

    本文将利用Unity3D游戏开发引擎及高通AR插件制作一个简易的技术Demo,并发布到Android系统的手机上进行运行测试。基于高通SDK的良好的封装和Unity3D引擎强大的功能支持,使得开发该Demo流程十分简单,大大降低了AR开发的入门门槛。

     

     

    **************************************************************************************************************************************************************

    准备工作:

    首先进行一些开发前的准备,我们需要准备好三个文件:

    • Qualcomm Vuforia 的SDK对应的Unity3D插件包

    这个就是高通AR的SDK了,首先登陆QualcommVuforia的官方网站(https://developer.vuforia.com/)并注册一个账号,按要求填入信息即可。


    注册完毕后登陆,点击Downloads下SDK标签里的Downloadfor Unity选项即可开始下载。此外我们看到,我们还可以直接用基于Android或IOS的SDK进行开发,但这里我们并不需要它们。


    • 待识别图片平面的二进制数据包(同样以Unity3D package的格式给出)

    我们只需要将需要识别的图片上传到高通的官网,随后网站会在云端对图片进行特征值的提取和数据的生成,下载该图片对应的数据文件即可。

    登陆账号后,选择Develop下的Target Manger选项卡。如果是第一次使用,应该首先新建数据库,单击Add Datebase按钮,填入数据库的名称并选择类型为Device,点击Create即可创建一个新的数据库。


    进入该数据库,并点击Add Target按钮,我们可以看到,我们可以添加多种类型的识别对象,简单的如平面的图片、文字等,复杂的还可以识别立方体、圆柱甚至一般的三维物体。在这里我们选择Single Image即可,上传对应的图片并填入其宽度,最后为其命名,单击Add即可添加成功。

    上传后可以看到图片相应的信息,这里的Rating代表图片的可识别质量,星级越高识别质量越好。


    最后,勾选图片前的复选框,单击Download Dataset按钮并选择UnityEditor平台,即可下载上传图片的特征信息数据集。

     

    • 主角3D模型及动画数据的Unity3Dpackage包

    这个就任意了,可以选用任意自己喜欢的人物模型来代替,在这里笔者使用的是Unity_Chan(Unity3D在日本的动漫化形象模型包),由于她对应的动作、声音较多,效果也比较好,为了保持下面操作的一致,建议读者第一次操作最好也选用这个。

    下载地址:http://unity-chan.com/

     

    完成以上三步后,你应该得到以下三个package文件:

     

    终于准备好了….下面我们就开始AR软件制作之旅。

     ************************************************************************************************************************************************************

     

    首先打开Unity3D软件(这里笔者选用的是Unity3D 5.1.0f3(32-bit)版本,Unity 5 64位版本与高通AR插件不兼容而报错,无法使用,低于4.6.7版本的Unity也无法使用),新建一个工程,并删除自带的摄像机与光源等物体,然后导入准备的3个package文件,保存为新的场景ar_demo.scene。

     

    Assets/Vuforia/Prefabs目录下的ARCameraImageTarget预制体拖入场景之中。

    ARCamera,即增强现实的虚拟摄像头,对应于移动设备的硬件镜头位置,通过画面中已经提取过特征值的图片的位置识别从而判断出镜头与图片之间的相对运动,进而调整ARCamera的位置,实现仿佛图片之上的虚拟人物也在镜头之中的假象,构造出一种虚拟的真实感。

    现在我们来看一下这个预制体的各项组件:

     


    Vuforia Behavior 是用来调整VR行为和相机配置的各项属性的组件。


    注意在App License Key一栏中要填入你在高通AR官网上的License Mangaer选项中获取到的密钥,其他选项如是否翻转镜头、同时最大追踪的物体数量、世界中心模式等可根据需要自己控制。

    Default Initialization Error脚本是用来处理初始化错误的内部脚本,不用理会。

    Database Load Behavior脚本用来控制读取刚才获取到的图片特征数据文件,在导入相应的package后,可以看到对应的load active选项,注意两者都要勾选,这样系统才可以读取到图片特征信息并进行识别


    Smart Terrian Track 脚本可以实现在比较复杂的平面上的图像识别,可以根据需要进行勾选。

    Web Cam Behaviour 脚本用来方便开发,通过它可以调用笔记本电脑上的摄像头来实时进行项目效果的检验,但是笔者发现当这个脚本运行时会导致Unity3D开启摄像头时崩溃,考虑到这只是一个工具脚本,将其注销掉即可,这并不会影响最终在实体机上面的运行效果。

    Keep Alive Behaviour 脚本是一个DontDestroy脚本,它可以实现ARCamera在多个场景之间的保持和生存,根据需要进行勾选。

    Video Texture Render脚本是用来渲染图像的内部脚本。

     

     

    ImageTarget,即代表待识别图片目标,它对应于你所要控制识别的那张图片的位置。

    其组件有:


    前两个都是基础组件,不加说明。

    Image Target Behaviour脚本用来加载图片数据,类型处可以选择predefined,即表示使用从官网上云处理而获取到的图片数据,在Date Set中选择图片对应的数据库名称,在ImageTarget中选择待识别图片目标的名称,并可以进行相关宽高的设置,其它选项如智能地形追踪、扩展追踪等可以根据需要勾选。


    Turn Off Behaviour 脚本是内部脚本,不用理会。

    Default Trackable Event Handler 脚本是一个支持用户扩展的脚本,当相机追踪状态发生改变时(如获取目标、丢失目标等)就会执行该脚本,我们可以模仿并加入自己的控制代码。

     

    设置好以上两个预制体的属性后,我们就可以把自己的模型拖到场景中,并放置在ImageTarget之上,根据需要进行动作、声音等效果的设置,但这并不是我们这里的重点,不再赘述。



    直接给出控制人物的相关代码如下:

     

    using UnityEngine;
    using System.Collections;
    
    public class ChanCtrl : MonoBehaviour {
    
    	private Animator _animator;
    	private AnimatorStateInfo _currentStateInfo;
    	private AnimatorStateInfo _preStateInfo;
    
    	public float waitTime = 3f;
    	public bool isRandom = true;
    
    	public AnimationClip[] _FaceClips;
    	public string[] _FaceMotionName;
    
    	public AudioClip[] _ChanVoice;
    
    	private void ChangeFace()
    	{
    		_animator.SetLayerWeight(1,1);
    		int index = Random.Range(0,_FaceMotionName.Length);
    		_animator.CrossFade(_FaceMotionName[index],0.5f);
    		if(GetComponent<AudioSource>().isPlaying)
    		{
    			GetComponent<AudioSource>().Stop();
    		}
    		GetComponent<AudioSource>().clip = _ChanVoice[index];
    		GetComponent<AudioSource>().Play();
    	}
    	// Use this for initialization
    	void Start () {
    	
    		_animator = GetComponent<Animator>();
    		_currentStateInfo = _animator.GetCurrentAnimatorStateInfo(0);
    		_preStateInfo = _currentStateInfo;
    
    		_FaceClips = Resources.LoadAll<AnimationClip>("FaceMotion");
    		_ChanVoice = Resources.LoadAll<AudioClip>("ChanVoice");
    
    		_FaceMotionName = new string[_FaceClips.Length];
    		for(int i = 0; i <_FaceClips.Length; i++)
    		{
    			_FaceMotionName[i] = _FaceClips[i].name;
    		}
    
    		StartCoroutine(RandomChangeMotion());
    	}
    	
    	// Update is called once per frame
    	void Update () {
    	
    		RaycastHit hitinfo;
    		if(Input.GetMouseButtonDown(0))
    		{
    			if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hitinfo,Mathf.Infinity))
    			{
    				if(hitinfo.collider.tag == "face")
    				{
    					ChangeFace();
    				}
    			}
    
    		}
    		if(_animator.GetBool("Next"))
    		{
    			_currentStateInfo = _animator.GetCurrentAnimatorStateInfo(0);
    			if(_preStateInfo.shortNameHash != _currentStateInfo.shortNameHash)
    			{
    				_animator.SetBool("Next",false);
    				_preStateInfo = _currentStateInfo;
    			}
    
    		}
    	}
    
    
    	IEnumerator RandomChangeMotion()
    	{
    		while(true)
    		{
    			if(isRandom)
    			{
    				_animator.SetBool("Next",true);
    			}
    			yield return new WaitForSeconds(waitTime);
    
    		}
    	}
    }
    

     

     

    完成以上工作后,基本就大功告成了。接下来就是项目发布了,像导出普通的APK文件一样,设置好相关的Bundle Identifier等数据,指定安卓SDK的安装目录,即可以导出相应的APK文件,从而可以安装到安卓手机上进行测试。

     

    实际效果如下,Unity娘可以随机作出不同的动作,触摸脸部还可以更改表情并发出声音,是不是很萌?快来一起学习制作吧!

     

     

     



    展开全文
  • unity3d射击类demo

    2017-04-19 18:09:44
    1 创建地板(floor)和四面墙壁,new Plane实现  自带的网格碰撞器Mesh Collider,勾选Convex,否则碰撞其他物体无效  2 创建几个cube物体,添加Box Collider和RigidBody,为cube创建脚本,控制物体移动,由于...

       1 创建地板(floor)和四面墙壁,new Plane实现

                  自带的网格碰撞器Mesh Collider,勾选Convex,否则碰撞其他物体无效

       2 创建几个cube物体,添加Box Collider和RigidBody,为cube创建脚本,控制物体移动,由于移动过程中物体会产生反转,造成前后方向异常,可以采用在updata方法里重置物体的旋转角度的方法:transform.localRotation = Quaternion.Euler(0, 0, 0);(四元数重置物体的旋转角度)

     控制物体移动:

            方法一:改变物体的位移:  transform.Translate(Vector3.left * speed);

            方法二:为物体添加一个力:rigidbody.AddForce(Vector3.left * speed);

        控制物体跳跃:

            为了防止物体跳跃过高,需要提前处理跳跃逻辑,只在地面上可以跳跃,需要使用变量控制

            floor物体添加一个Tag标签,命名为Floor,

            物体的碰撞事件(碰撞器):onCollisionEnter() OnCollisionExit() OnCollisionStay(),由于物体受重力影响,会一只在floor上面,物体的碰撞只在OnCollisionStay()方法处理,变量的值也在这个方法里控制  

    1. void OnCollisionStay(Collision other)
    2. {
    3. Debug.Log("OnCollisionStay other :"+ other.gameObject.tag);
    4. if(other.gameObject.tag =="Floor")
    5. {
    6. isGround =true;
    7. }
    8. }
    9. Update()方法:
    10. if(Input.GetKey(KeyCode.Space))
    11. {
    12. if(isGround)
    13. {
    14. transform.Translate(Vector3.up );
    15. isGround =false;
    16. }
    17. }
            3 物体的碰撞事件(触发器):OnTriggerEnter() OnTriggerStay() OnTriggerExit()此事件的触发条件是is Trigger设置为true才可以。

      控制射线模拟射击行为

        1 在需要发射射线的位置添加组件:Line Renderer;Light;Particle system

        2 Line Renderer 配置材质(射线的颜色),射线起始宽度,结束宽度

        3 Light里面配置点光源(Point),设置光源颜色(决定了射击时枪口光颜色)

        4 射线发射物体创建子物体FaceLight(可选),决定了射击时正前方的颜色

        5 注意:前4个组件默认不选中,以控制射击动作时射线和光线闪烁

        6 编写代码,控制射线

            1 awake函数里获取每个组件对象

            2 updata函数里判断鼠标左键点击动作,点击鼠标左键即可触发射击操作

    1. if(Input.GetButtonDown("Fire1")&& timer >= betweenTwoShot &&Time.timeScale !=0)
    2. {
    3. Shooting();
    4. }
            3 射击函数:这里才关联刚才未选中的组件,设计射线的位置朝向等
    1. gunLight.enabled =true;
    2. faceLight.enabled =true;
    3. gunParticle.Stop();
    4. gunParticle.Play();
    5. gunLine.enabled =true;
    6. gunLine.SetPosition(0, transform.position);
    7. Debug.Log("射线的位置:"+ transform.position);
    8. shootRay.origin = transform.position;
    9. shootRay.direction = transform.forward;
            4 判断射线射击到其他物体的操作:使用Physics.Raycast(射线, RaycastHit射线碰撞器,射线长度,layer层);
            注意:这里的layer层可以在项目环境中设置,U3D提供了32个layer层,系统占用8个,其余的我们可以自定义实现

             5 获取layer层,并使用步骤4的方法判断射线是否处于该层
    1. shootableMask =LayerMask.GetMask("shooter");
    2. if(Physics.Raycast(shootRay,out shootHit, gunRange, shootableMask))//光线投射(射线起点,射线方向,射线长度,碰撞器)
    3. {
    4. //进入这个方法只是表示射线射击到了这个layer里,并不表示射击到了目标物体
    5. Debug.Log("射线已投射......");
    6. gunLine.SetPosition(1, shootHit.point);
    7. }
    8. // If the raycast didn't hit anything on the shootable layer...
    9. else
    10. {
    11. // ... set the second position of the line renderer to the fullest extent of the gun's range.
    12. gunLine.SetPosition(1, shootRay.origin + shootRay.direction * gunRange);
    13. Debug.Log("else......");
    14. }

      6 设置脚本模拟敌人受到伤害

        1 为敌人物体创并挂上脚本CubeHealth,射线发出后,由于敌人属于环境layer层的子类,可以获取到射线

        2 使用射线碰撞器方法获取射线碰撞组件是否已经挂CubeHealth脚本的组件,获取到后做下一步处理

    1. CubeHealth cubeHealth = shootHit.collider.GetComponent<CubeHealth>();
    2. if(cubeHealth !=null)
    3. {
    4. Debug.Log("射线已投射--------------");
    5. }
        3 敌人受到伤害后生命值减少,生命值小于0时,销毁
    1. publicvoidTakeDamage(int hit,Vector3 point)
    2. {
    3. defaultHealth -= hit;
    4. Debug.Log("cube health :"+ defaultHealth);
    5. if(defaultHealth <=0)
    6. {
    7. Destroy(gameObject);
    8. }
    9. }
        7 设置摄像机跟随主角移动
            1 为主角创建tag,命名为cube
            2 为Camera创建脚本,找到主角的tag,插值器跟随tag移动
    1. publicclassCameraFollow:MonoBehaviour
    2. {
    3. publicTransform target;//设置跟随的对象,这里写主角的tag
    4. Vector3 offset;
    5. publicfloat smoothTime =5f;
    6. // Use this for initialization
    7. voidStart()
    8. {
    9. offset = transform.position - target.position;
    10. }
    11. // Update is called once per frame
    12. voidUpdate()
    13. {
    14. Vector3 v3 = target.position + offset;
    15. //插值器,表示在一定时间内(第三个参数),从坐标一(第一个参数)移动到坐标二(第二个参数)
    16. transform.position =Vector3.Lerp(transform.position, v3, smoothTime *Time.deltaTime);
    17. }
    18. }
        8 设计游戏的Splash页面
             
            1 添加Canvas组件,Canvas组件的子控件设置一个button和一个简单说明的text
                Canvas组件说明:http://blog.csdn.net/wangmeiqiang/article/details/52531315
            2 为Canvas增加image组件。
                注意:image组件的Source Image资源必须是Sprite(2D and UI)格式,可以点击图片修改格式
            3 为Canvas绑定的C#代码增加点击事件
                1 代码里增加onButtonClick()方法
    1. publicvoid onButtonClick()
    2. {
    3. canvas.gameObject.SetActive(false);//设置Canvas隐藏
    4. human.gameObject.SetActive(true);//设置主角显示
    5. environment.gameObject.SetActive(true);//设置环境显示
    6. }
                2 为Button物体增加上述点击事件
                  
         9 模拟随机敌人出现,增加游戏趣味
            1 将步骤2里创建的cube物体创建为预制体,再增加一个圆形预制体
            2 创建敌人管理类,在environment里创建空物体cube,绑定管理类cubeManager
            3 管理类的实现逻辑:每隔三秒初始化两个物体
    1. publicclass cubeManager :MonoBehaviour
    2. {
    3. publicGameObject cubeObject;
    4. publicGameObject sphereObject;
    5. voidStart()
    6. {
    7. InvokeRepeating("CreateCube",3f,3f);
    8. }
    9. voidCreateCube()
    10. {
    11. Vector3 v3 = transform.TransformDirection(Random.Range(0f,6f),Random.Range(0f,4f),Random.Range(-26f,-6f));
    12. Instantiate(cubeObject, v3, transform.rotation);
    13. Instantiate(sphereObject, v3, transform.rotation);
    14. }
    15. }
                4 将预制体绑定到空物体cube上

                 5 运行游戏,发现很多物体创建出来后,由于受物理因素的影响,会产生弹飞效果,飞出environment环境,但是没有销毁,造成游戏卡顿无响应
                解决方法:在地板底部增加一个大于地板区域的,物体飞出范围碰撞到这个区域后,执行销毁函数
    1. publicclassDestoryObject:MonoBehaviour{
    2. //设置cube或者floor 的is Trigger为true时,才会执行此函数
    3. voidOnTriggerEnter(Collider other)
    4. {
    5. Debug.Log("OnTriggerEnter other :"+ other.gameObject.tag);
    6. if(other.gameObject.tag =="cube")
    7. {
    8. Destroy(other.gameObject);
    9. }
    10. if(other.gameObject.tag =="sphere")
    11. {
    12. Destroy(other.gameObject);
    13. }
    14. }
    15. voidOnTriggerStay(Collider collider)
    16. {
    17. }
    18. voidOnTriggerExit(Collider collider)
    19. {
    20. }
    21. }


            
                
     
        

     

     

    展开全文
  • Unity3D入门Demo-Cube移动-触发球体-切换场景新建Unity3D项目--选择3D类型编写场景切换脚本ChangeScenes添加场景切换脚本到游戏物体并保存Menu场景新建Game游戏主场景,并添加方块和两个球体编写Cube移动脚本...

    新建Unity3D项目–选择3D类型

    在 Hierarchy面板下,单击鼠标右键,选择 UI–>Button

    创建一个按钮,会自动创建Canvas

    调整Button的位置到屏幕正中间,修改Text文字为 “开始游戏”

    同样的操作方法,在 Hierarchy 面板下 右键Create Empty ,创建空的GameObject ,修改名称为 ChangeScenes。
    如下图
    在这里插入图片描述

    编写场景切换脚本ChangeScenes

    在Project面板 Assets目录下右键 新建文件夹,BasicCubeGame,然后再其下面再新建两个文件夹分别命名为Scenes和Scripts.
    在Scripts文件夹下右键选择新建一个脚本,选择Create–>C# Script
    修改名称为ChangeScenes.cs
    双击打开脚本,VS2017将会启动,需要等待一段时间
    编写以下脚本

    
    using UnityEngine;
    using UnityEngine.SceneManagement;
    public class ChangeScenes : MonoBehaviour {
    
        //需要切换的场景英文名称
        public string sceneName;
    	
        public void GoToNextScene()
        {
            //切换场景的方法
            SceneManager.LoadScene(sceneName);
        }
        
    }
    

    代码很简单,就是一个场景切换的功能,由外部传入需要切换的场景名称:

    添加场景切换脚本到游戏物体并保存Menu场景

    返回Unity3D编辑器界面,将在Project面板刚才写好的ChangeScenes文件,按住不动拖放到Hierarchy 面板下的ChangeScenes游戏物体上,如图
    在这里插入图片描述
    如果拖放成功,点击Hierarchy 面板下ChangeScenes游戏 物体,可以看到如下图
    在这里插入图片描述

    将SceneName变量名称修改为Game

    保存当前场景,选择编辑器左上角的File–>SaveScene 选择保存到,刚刚新建的BasicCubeGame–>Scenes目录下,,命名为Menu

    新建Game游戏主场景,并添加方块和两个球体

    选择编辑器左上角的File–>New Scene 新建一个场景
    在Hierarchy 面板下,右键新建一个Cube ,具体操作右键选择3D Object --> Cube
    同样的方法再新建两个球体,具体操作右键选择3D Object --> Sphere 连续操作两次
    选中Cube,将其坐标设置为Transform–>Position设置为 0,0,0
    选中Cube,添加刚体组件,操作方法如图(先要选中Cube)
    在这里插入图片描述

    修改Rigidbody组件,勾选IsKinematic
    修改BoxCollider组件,勾选IsTrigger
    如下图
    在这里插入图片描述


    将两个球体的名称分别修改为SphereLose和SphereWin
    分别设置SphereLose的坐标Transform–>Position设置为 -4,2,0
    设置SphereWin的坐标为Transform–>Position设置为 2,5,0
    设置SphereWin的坐标为Transform–>Scale设置为 2,2,2 (即将其大小放大一倍)

    修改摄像机Main Camera的坐标为Transform–>Position设置为 0,3,-10
    将摄像机的Clear Flags参数修改为 Solid Color ,如下图(截图不完整,摄像机的Z坐标为-10 ,不是-1)
    在这里插入图片描述
    在 Hierarchy 面板下 右键Create Empty ,创建空的GameObject ,修改名称为 ChangeScenes,同样的方式将ChangeScenes.cs脚本拖放到 Hierarchy 面板的ChangeScenes游戏物体上

    编写Cube移动脚本MoveCube

    在Scripts文件夹下右键选择新建一个脚本,选择Create–>C# Script
    修改名称为MoveCube.cs
    双击打开脚本,VS2017将会启动,需要等待一段时间
    编写以下脚本

    
    using UnityEngine;
    
    public class MoveCube : MonoBehaviour {
    
        //移动速度
        public float speed;
      
    	void Update () {
            Move();
            PosCheck();
        }
    
        //移动代码
        void Move()
        {
            if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) //上移
            {
                transform.Translate(Vector3.up * speed * Time.deltaTime);
            }
            if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) //下移
            {
                transform.Translate(Vector3.down * speed * Time.deltaTime);
            }
            if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) //左移
            {
                transform.Translate(Vector3.left * speed * Time.deltaTime);
            }
            if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) //右移
            {
                transform.Translate(Vector3.right * speed * Time.deltaTime);
            }
      
        }
    
    
        //防止移动出了屏幕之外
        void PosCheck()
        {
            float xpos = transform.position.x;
            float ypos = transform.position.y;
    
            if(xpos >4 || xpos < -4  || ypos >6|| ypos < -6)
            {
                transform.position = new Vector3(0, 0, 0);
            }
    
        }
    
    }
    
    

    将在Project面板刚才写好的MoveCube文件,按住不动拖放到Hierarchy 面板下的Cube游戏物体上,随后选中Cube文件,修改Speed为3
    在这里插入图片描述

    编写Cube触发球体脚本TriggerEnter

    在Scripts文件夹下右键选择新建一个脚本,选择Create–>C# Script
    修改名称为TriggerEnter.cs
    双击打开脚本,VS2017将会启动,需要等待一段时间
    编写以下脚本

    
    using UnityEngine;
    using UnityEngine.SceneManagement;
    public class TriggerEnter : MonoBehaviour {
    
    	
    
        void OnTriggerEnter(Collider collider)
        {
            Debug.Log("Enter" + collider.gameObject.name);
    
            string gameobj_name = collider.gameObject.name;
    
            if( gameobj_name == "SphereWin")
            {
                SceneManager.LoadScene("Win");
            }
            if (gameobj_name == "SphereLose")
            {
                SceneManager.LoadScene("Lose");
            }
                
        }
    
    }
    
    

    将在Project面板刚才写好的TriggerEnter文件,按住不动拖放到Hierarchy 面板下的Cube游戏物体上

    创建返回按钮并配置逻辑,保存Game场景

    在 Hierarchy面板下,单击鼠标右键,选择 UI–>Button
    修改Button按钮的位置到屏幕上面,中间位置,调整大小
    修改Text文字内容为“返回主菜单”
    选中Button,选择右侧Inspector面板下面,OnClick下面的加号,将场景中的ChangeScenes拖放到RuntimeOnly下面的框中,在右侧选择GoToNextScene方法,操作方法如下图
    在这里插入图片描述

    在 Hierarchy面板下,选中ChangeScenes,在右侧Inspector面板,SceneName变量处填写Menu,如下图
    在这里插入图片描述

    保存场景,命名为Game

    创建Win场景和Lose场景

    新建一个场景,创建一个Button和Text,
    修改Text文字为“恭喜你赢了”,
    修改Buttion下面Text文字为“返回主菜单”

    同样的方法,在 Hierarchy 面板下 右键Create Empty ,创建空的GameObject ,修改名称为 ChangeScenes,同样的方式将ChangeScenes.cs脚本拖放到 Hierarchy 面板的ChangeScenes游戏物体上,填写SceneName变量处填写Menu

    同上面的方法,添加Button按钮的点击触发

    保存场景,命名为Win


    同样的方式,创建Lose场景
    新建一个场景,创建一个Button和Text,
    修改Text文字为“你输了请重新来过”,
    修改Buttion下面Text文字为“返回主菜单”
    同样的方法,在 Hierarchy 面板下 右键Create Empty ,创建空的GameObject ,修改名称为 ChangeScenes,同样的方式将ChangeScenes.cs脚本拖放到 Hierarchy 面板的ChangeScenes游戏物体上,填写SceneName变量处填写Menu

    同上面的方法,添加Button按钮的点击触发

    保存场景,命名为Lose

    将场景添加到BuildSettings里面

    在这里插入图片描述
    选中4个场景,或者一个一个选择拖放,都拖放到BuildSettings里面
    在这里插入图片描述

    测试运行

    在这里插入图片描述

    游戏效果
    在这里插入图片描述

    展开全文
  • 这个是模仿市面上的一款A Monster Ate My Homework的demo   选关界面,拖动屏幕选择关卡 炸弹 机关 失败 胜利
  • Unity UGUI 官方示例 Demo

    2020-07-30 23:33:28
    UnityUGUI的官方Demo 有拖拽,3DUI,拖块,布局,Tab页制作 大部分UI的使用在示例中都有对应。优质资源 可导入运行 18.5.16更新
  • 局域网多人联机小游戏
  • 那么从下个月开始Himi将陪大家一起关注下Unity3D的开发,主要是针对于iOS和Android两个平台,当然在Unity3D(3.5)的项目当今支持导出的平台有如下: 1.Web Player 2.PC and Mac 3.iOS 4.Android 5. Flash Player 6....
  • Unity-赛车Demo

    2017-02-17 08:45:35
    using UnityEngine; using System.Collections; public class CarDrive : MonoBehaviour { public WheelCollider wheelColLF; public WheelCollider wheelColLB;... public WheelCollider wheelColRF;
  • 2011 年,网页 3D 这一网游开发新趋势逐渐浮出水面, Unity 作为浏览器及移动设备 3D 引擎领域的佼佼者,在国内开始崭露头角。我们团队也完成了首款 Unity Demo 的第一个版本。  Demo 通过角色选择、地图漫游、...
  • Unity3D 游戏开发之一】搭建Unity3D环境&导出自带Demo示例;  那么从下个月开始Himi将陪大家一起关注下Unity3D的开发,主要是针对于iOS和Android两个平台,当然在Unity3D(3.5)的项目当今支持导出的平台有如下: ...
  • 安装 直接yunxin
  • 自己在家写的一个案例,希望大家开源一起交流分享,代码全,适合初学者学习,看运行操作,自己也可以拓展学习下
  • 最近更新Unity3D,更新包推送了Standard Assets Example Project的更新,于是便下载下来研究了下,发现还是挺好用的,里面有很多示例,有各种模型,适用于学习Unity的新手研究学习。在我们安装好Unity3D之后,安装...
  • 只要碰到两个比较蛋疼的问题: 1. Error generating final archive: Debug certificate expired on **** 从字面了解,是由于Debug证书过期所致。 ...Android的应用程序必须经过开发者自己的自签名证书进行数字...
  • unity典型demo资源记录

    2016-02-25 09:30:56
    最近工作了,与上学最大的区别是,要做...希望给学习unity3d的新手提供点素材,目前我发现unity的资源真丰富,入门最容易,操作最简单。怪不得,该引擎已经占据游戏的大半江山! 下面是收集的unity资源: ★ unity3
  • unity3d实现不写一行代码,做个第三视角3d游戏
  • 1.下载Unity3D ,建立工程 2.Vuforia 官网https://developer.vuforia.com/ 先下载SDK,然后倒入Unity 1)登录注册,选择Develop,Add license Key 2)Add ImageTarget 添加要识别的图片 a)添加 Image的...
1 2 3 4 5 ... 20
收藏数 3,367
精华内容 1,346
关键字:

unity3d如何运行demo