Unity3D打Box游戏
先学习一些基本的脚本实现:
1.动态创建物体.默认位置是(0,0)位置
GameObject goNew = GameObject.CreatePrimitive(PrimitiveType.Cube);
//创建的位置
goNew.transform.position = new Vector3(0, 0, -2);
goNew.AddComponent<Rigidbody>();//添加刚体组件,是一种泛型
2.判断用户是否按下鼠标左键
if(Inut.GetMouseButtonDown(0))
3.按下鼠标左键,给它一个往前的脉冲力,forward就是一个默认长度为1的单位向量
this.gameObject.rigidbody.AddForce(Vector3.forward * 50, ForceMode.Impulse);
4.给当前物体添加一个往鼠标点击的方向的多大的力,它就会往那个方向去走
//点击目标然后从摄像机的位置发射出一个小球,这里要计算力的方向向量
Vector3 targetPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 3));
Vector3 dir = targetPos - Camera.main.transform.position;
//给当前的物体添加某个方向的力
this.gameObject.rigidbody.AddForce(dir * 5,ForceMode.Impulse);
5.点击鼠标生成对象
if (Input.GetMouseButtonDown(0))
{
GameObject goNew = GameObject.CreatePrimitive(PrimitiveType.Sphere);
goNew.transform.position = new Vector3(0, 0, 0);
goNew.AddComponent<Rigidbody>();
}
6.对象销毁回收内存
if (Input.GetMouseButtonDown(0))
{
GameObject s1 = GameObject.Find("Sphere");//相当于document.getElementById();
Destroy(s1,2); //延时2秒销毁对象
}
制作游戏:
using UnityEngine;
using System.Collections;
public class gameText : MonoBehaviour {
private GameObject goPlane;
// Use this for initialization
void Start () {
//找到地形对象
goPlane = GameObject.Find("Plane");
//创建4*4的cube
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
go.transform.position = new Vector3(i, j, -1);
go.AddComponent<Rigidbody>();
go.AddComponent<AutoDistory>();//相当于实例化一个脚本销毁对象的一个类然后挂到每个对象中,让他不可见的时候自行销毁
}
}
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
//创建子弹的object
GameObject goBullet = GameObject.CreatePrimitive(PrimitiveType.Sphere);
goBullet.transform.position = Camera.main.transform.position;
goBullet.AddComponent<Rigidbody>();
//让对象不可见的时候自行销毁
goBullet.AddComponent<AutoDistory>();
//获取到这个对象的多有资源,在发射的时候播放一个音乐
goPlane.GetComponent<AudioSource>().Play();
//点击鼠标,从摄像机的位置开始发射小球
Vector3 targetPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 3));
goBullet.rigidbody.AddForce((targetPos - Camera.main.transform.position) * 20, ForceMode.Impulse);
}
}
void OnGUI()
{
string s = "作者:丁小未";
GUIStyle bb = new GUIStyle();
bb.normal.background = null;//设置背景
bb.normal.textColor = new Color(1,0,0);//设置颜色
bb.fontSize = 40;
GUI.Label(new Rect(40, 10, 100, 50), s, bb);
}
}
AutoDistory脚本:
using UnityEngine;
using System.Collections;
//当东西不可见的时候就让他自动销毁
public class AutoDistory : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnBecameInvisible()
{
Destroy(this.gameObject);
}
}
其他提示:
1.天空盒的导入,提醒不要全部导入,不然文件会很大,应用是点击Edit-》Render Setting,然后导入天空盒
2.音频文件是在Camera上添加Component->Audio->Audio Sourse,他自动附带的Audio Listenner
详细项目源码:http://download.csdn.net/my
Unity3D打Box游戏的更多相关文章
- Unity3d开发IOS游戏 基础
Unity3d开发IOS游戏 基础 @阿龙 - 649998群 1.先说明两个问题,我在WIN7下面的U3D里面,用了雅黑字体,但是导出为ios后,字体就看不见了,这是为什么呢?这是需要在MAC下找 ...
- (转)Unity3D研究院之游戏架构脚本该如何来写(三十九)
这篇文章MOMO主要想大家说明一下我在Unity3D游戏开发中是如何写游戏脚本的,对于Unity3D这套游戏引擎来说入门极快,可是要想做好却非常的难.这篇文章的目的是让哪些已经上手Unity3D游戏 ...
- Unity2016 Unity3D开发VR游戏的经验
http://z.youxiputao.com/articles/8313 在4月12日的Unite 2016大会上,暴风魔镜高级产品经理吴涛分享他用Unity3D开发VR游戏的经验,以下为分享实录: ...
- 【CityHunter】通过Unity3D来制作游戏中AR部分的内容
嗯,最近再考虑,CityHunter中,玩家攻略藏宝图时,为了增加可玩性,应该增强在AR部分的游戏性.最近特别火的游戏<Pokemon Go>在打开摄像头以后,可以看到小精灵,实际上,如果 ...
- Unity3D 之3D游戏入门Hello world(一)
这几天开始玩Unity3D 有关3D的内容了,去年开始玩过一段时间的2D制作,不过因为年初找工作,所以放了一段时间, 现在再捡起来发现忘的已经差不多了,只能再从头开始,所以就从3D开始算了.下面是3D ...
- [Unity3D]Unity3D发展偷看游戏初期阶段NGUI
朋友,大家晚上好. 我是秦培.欢迎关注我的博客,我的博客地址blog.csdn.net/qinyuanpei.近期博主開始研究NGUI了,由于NGUI是Unity3D中最为流行的界面插件,所以不管从学 ...
- [Unity3D]Unity3D圣骑士当游戏开发商遭遇Mecanim动画系统
大家好.我是秦培.欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 博主总算赶在这个月底写出了这篇文章.这个月由于期末考试一直没时间研究太多关于技术方面 ...
- Unity3D流行的游戏开发人员构建高速检查站系统
好友,大家好,欢迎关注我的博客.我是秦培,我的博客地址blog.csdn.net/qinyuanpei. 今天,我想分享的是,现在在移动平台上的检查点系统更受欢迎,机游戏如<愤慨的小鸟>. ...
- Unity3d&C#分布式游戏服务器ET框架介绍-组件式设计
前几天写了<开源分享 Unity3d客户端与C#分布式服务端游戏框架>,受到很多人关注,QQ群几天就加了80多个人.开源这个框架的主要目的也是分享自己设计ET的一些想法,所以我准备写一系列 ...
随机推荐
- 【GoLang】与或非 异或操作
在Go规范,^这个运算符在一元运算符和二元运算符中都出现了.那么他们分别是啥?在规范中说道:^ bitwise XOR integers这是按位异或. Go语言位操作实例 <!-- lang: ...
- crontab命令
前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...
- C# 毕业证书打印《三》
打印很关键的方法,打印方法DataPrint(),将你要打印的数据信息发送到打印机就可以了,打印机将自动处理. public void DataPrint() { try { PrintDocumen ...
- 浅探委托(delegate)和事件(event)
.NET Framework通过委托提供了一种回调函数机制. internal delegate void FeedBack(Int32 value); 内部委托FeedBack的声明,一个委托要指定 ...
- java 调用webservice的各种方法总结
java 调用webservice的各种方法总结 几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较 方法一:创建基于JAX-WS的webservice(包括 ...
- HttpServletRequest中得到各种信息
1.获得domain: StringBuffer url = request.getRequestURL(); String domain = url.delete(url.length() - re ...
- Core Data 多线程时多个context使用
原文地址:http://blog.csdn.net/willmomo/article/details/19759413 写的非常好!我这里截取一点重要的,备份,请去原地址阅读! 本人去年10月份才接触 ...
- iOS coredata 级联删除
应用场景如下,每个用户可以设定多个提醒,当删除一个用户时,应当把相关的提醒都删除,而删除一个提醒时,应当把提醒从用户信息中删除. 那么 Profile 应该建立一个如下图的relationship 而 ...
- ACM/ICPC 之 分治法入门(画图模拟:POJ 2083)
题意:大致就是要求画出这个有规律的Fractal图形了= = 例如 1 对应 X 2 对应 X X X X X 这个题是个理解分治法很典型的例子(详情请参见Code) 分治法:不断缩小规 ...
- h5页面的公共css
/*reset*/body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,tex ...