unity3D游戏开发学习之使用perfab(预设)创建很多导弹并发射


unity中,perfab是一个很重要的知识点,它是可重复利用的Game Object。这使我联想到cocos2dx中的CCSpriteBatchNode批次渲染可以大大提高渲染效率。同样,unity中的perfab使用批量物体的渲染如大量子弹、城墙等。好,下面我们来在unity中创建导弹。

一、导入3D模型

如果还不知道如何制作简单的3D导弹模型,或者没有该模型的,可以参考这篇文章: http://blog.csdn.net/wangbin_jxust/article/details/24678873

3D模型下载: http://download.csdn.net/download/wangbin_jxust/7269663

直接将fbx格式的3D模型拖入到unity的project面板的assets文件夹下,即可完成导入(好像我说的是废话.,)。

二、创建场景、灯光、地形、物体

三、场景中创建导弹

创建一个cube,添加Rigidbody属性,使其具有重力属性。将assets中的导弹模型拖动给该cube ,使导弹模型是cube的子对象。在scene视图中,分别选中的x,y ,z坐标,并且旋转导弹的角度,调整导弹至cube的大小。

四、创建预设(perfab)

project面板中点击create->perfab

很明显,填充过的预设是蓝色,而我们刚刚创建的预设New Perfab3则是白色的,如何填充预设呢?直接将Hierarchy中的cube拖动给New Perfabs就OK啦。

五、编写导弹发射脚本

在assets目录下,新建一个scripts文件夹用来存放脚本,在scripts文件夹中创建一个c#脚本,命名为fire。使用Mono编辑器打开该脚本:

先创建两个变量FirePoint 和 Missile:

然后在update函数中添加导弹创建代码,整个文件的代码如下:

using UnityEngine;
using System.Collections;

public class Fire : MonoBehaviour {
	public Transform FirePoint;
	public Rigidbody Missile;
	// Use this for initialization
	void Start () {

	}

	// Update is called once per frame
	void Update () {
		if (Input.GetKeyDown(KeyCode.Space)) {
			Rigidbody clone = (Rigidbody)Instantiate(Missile ,Missile.position ,Missile.rotation);
			clone.velocity = transform.InverseTransformDirection (Vector3.forward * 100);
		}
	}
}

Instantiate是一个静态函数,用于克隆perfab。所以,这里的Missile变量应该是一个perfab。

脚本写好了?我们让谁来执行这段脚本呢?

此时,我们使用ctrl + shift + N创建一个空的对象,命名为player,将脚本拖动给这个空对象。

然后创建一个空对象,命名为FirePos,用来作为发射导弹的位置标记。将FirePos拖动给脚本中的FirePoint对象,将我们之前创建的预设New Perfab3拖动给脚本中的Missile,如下图。

至此,我们就可以发射导弹了。运行场景,点击空格键,便可以发射无数导弹了。

时间: 2024-11-08 14:54:45

unity3D游戏开发学习之使用perfab(预设)创建很多导弹并发射的相关文章

unity3d游戏开发学习之使用3dmax创建导弹模型

在着手研究Unity3D的游戏开发时,3D模型能够考虑从unity的assets store去获取,也能够从网上搜索下载,同一时候咱们也能够尝试下自己动手去做一些简单的模型. 这里就依据unity3d坦克大战教学视频,来制作一个简单的导弹模型:包括弹头,弹身,尾翼.当中,弹头,单身都是使用胶囊来实现,尾翼是使用多边形来实现. 一.制作弹体 打开3dmax后,右側的工具栏中,选择"扩展基本体",这时就能够看到能够选择的形状有异面体.环形结等多种. 选择胶囊,将光标放到原点处開始拖动,拖动

【Unity】1.3 Unity3D游戏开发学习路线

分类:Unity.C#.VS2015 创建日期:2016-03-23 一.基本思路 第1步--了解编辑器 首先了解unity3d的菜单,视图界面.这些是最基本的基础,可以像学word操作一样,大致能明白有几个菜单,几个基本的视图,各自起什么作用就可以了.当然还要了解人物基本的比例和结构. 第2步-了解基本概念 理解场景里面的坐标系统,输入系统,简单的向量概念.Unity3D的坐标系统及向量概念如果不理解清楚,不理解世界坐标,局部坐标的关系,即使一个简单的移动,缩放,旋转的几行代码,也会困惑你半天

unity3d游戏开发学习分享之表面着色器讲解

一.三种着色器的书写格式: 1.surface shaders, 指的是表面着色器 2.vertex and fragment shaders and 指的是顶点和片段着色器 3.fixed function shaders. 指固定功能着色器 二.顶点着色器与片段着色器 我们可以这么理解,在Unity的三维空间中,所有复杂模型都是由无数个三角形构成的,那么顶点(Vertex)就是说,这些构成复杂模型的三角形的顶点,而片段(fragment)就是这些三角形的填充区域了. 三.表面着色器(Surf

Unity3D游戏开发从零单排(三) - 极速创建狂拽酷炫的游戏地形

提要 在Unity工作流程内,地形是一个必不可少的重要元素.不论是游戏或虚拟现实都会使用到各种类型的地形效果,在这个教学中我们须要了解到地形的制作基本概念与,当中对于Unity的地形操作部分须要大量的操作练习.熟悉这些功能操作之后,相信对于游戏地形的制作与运用将会更得心应手. 先看终于效果: 环境:windows7 64bit Unity3d4.2.1 所需资源:terrain.raw 创建project File  ->  New project 选择project存放的位置,同一时候导入 S

Unity3D游戏开发之动画模型导入

Unity3D游戏开发之动画模型导入 导入动画文件后,在工程(Porject)面板中选中,通过Inspector面板修改参数设置. 在项目视图中选中模型文件.如果想用旧版3.x的动画系统导入和编辑动画,请选择legacy选项.如果你有一个人性角色,比如,一个脑袋两条胳膊的两足动物,请选择Humanoid和'Create from this model',这样,一个完美匹配你角色骨骼关系的替身就可以被创建,或者你也可以选择其他预设好的替身. 如果你的角色不是人形物体,比如一个四足动物或者任何其它的

Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

提要 此篇是一个国外教程的翻译,虽然有点老,但是适合新手入门.自己去写代码,debug,布置场景,可以收获到很多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一篇中,我们学会了怎么在Unity中搭建游戏的场景,并且设置模型的物理属性. 在第二篇中,我们学会了怎么在unity中使用脚本,并且创建了大部分的游戏逻辑,包括投球和得分! 在这最后一节中,我们将会为用户创建一个菜单系统,并且和GameController进行交互,我们开始吧. 在设备上测试 到目前为止,

Unity3D游戏开发之伤害数值显示

众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念,它是一种非常深奥的概念.游戏从某种意义上 是多种选择的组合,因此如果一个游戏失去平衡,那么就会减少选择而影响游戏的乐趣.数值策划人员通常需要按照一定的规则和方法将整个游戏系统的相关数值调整到一个合适的范围,以确保玩家可以有更多地选择以增强游戏的可玩性.数值策划是近年来国内游戏行业从国外游戏业引申过来的一个概念,我们在学习游戏设计的过程中,除了专注于技术上的实现以外,还应该对游戏设计中的相关理论有所了解

[Unity3D]Unity3D游戏开发之伤害数值显示

大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念,它是一种非常深奥的概念. 游戏从某种意义上 是多种选择的组合,因此假设一个游戏失去平衡,那么就会降低选择而影响游戏的乐趣. 数值策划人员通常须要依照一定的规则和方法将整个游戏系统的相关数值调整到一个合适的范围.以确保玩家能够有很多其它地选择以增强游戏的可玩性.数值策划是近年来国内游戏行业从国外游戏

Unity3D游戏开发之详解 Animation类和Animator类

Unity3D游戏开发之详解 Animation类和Animator类 Animation类 animation组件用于播放动画.可以指定动画剪辑到动画组件并从脚本控制动画播放.在Unity的动画系统基于权重并且支持动画融合,叠加动画,动画混合,标签和完全控制动画播放的各个方面. 如果想播放一个简单的动画,可以使用Animation.Play:如果想在动画之间交叉淡入,可以使用Animation.CrossFade:如果想改变动画模式(循环,一次,乒乓),可以改变动画导入设置里面的动画帧的Wra