Unity3D开发类似保龄球游戏
先学习一些基本的脚本实现:
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开发类似保龄球游戏的更多相关文章
- Unity3d开发“类三消”游戏
新建一个Project,导入图片素材和声音文件,把图片的Texture Type都修改为Sprite(2D and UI)[1].新建一个命名为Background的GameObject,为之添加背景 ...
- Unity2016 Unity3D开发VR游戏的经验
http://z.youxiputao.com/articles/8313 在4月12日的Unite 2016大会上,暴风魔镜高级产品经理吴涛分享他用Unity3D开发VR游戏的经验,以下为分享实录: ...
- Unity3d开发IOS游戏 基础
Unity3d开发IOS游戏 基础 @阿龙 - 649998群 1.先说明两个问题,我在WIN7下面的U3D里面,用了雅黑字体,但是导出为ios后,字体就看不见了,这是为什么呢?这是需要在MAC下找 ...
- Unity 4.2.0 官方最新破解版(Unity3D 最新破解版,3D游戏开发工具和游戏引擎套件)
Unity是一款跨平台的游戏开发工具,从一开始就被设计成易于使用的产品.作为一个完全集成的专业级应用,Unity还包含了价值数百万美元的功能强大的游戏引擎.Unity作为一个游戏开发工具,它的设计主旨 ...
- 添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三)
添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blo ...
- JAVA开发类似冒险岛的游戏Part1
JAVA开发类似冒险岛的游戏Part1 一.总结 二.JAVA开发类似冒险岛的游戏Part1 初学嘛) ,不过总的来说这个程序还是很有意思的.这里我重新再整理了一下,希望能帮助到其他想要开发类似程序的 ...
- Unity3D游戏开发——编程实现游戏管理器
本篇简介 本篇介绍了如何将上一篇的设计模式思想运用到实际的开发过程中. 脚本文件 (1)IGameManager:这个接口存在声明了一个属性(一个拥有getter函数的变量,属性的类型是Manager ...
- 跟我从零基础学习Unity3D开发--NGUI入门基础
英雄联盟(撸啊撸) QQ飞车 魔兽世界等等相信大家都玩过游戏吧,玩过那UI知道是什么吧?UI可能说得有点专业的话那么游戏中那些属性面板例如: 现在对UI有一定认识了吧!回想一下您玩过的游戏就一定知道什 ...
- 使用Laya引擎开发微信小游戏(上)
本文由云+社区发表 使用一个简单的游戏开发示例,由浅入深,介绍了如何用Laya引擎开发微信小游戏. 作者:马晓东,腾讯前端高级工程师. 微信小游戏的推出也快一年时间了,在IEG的游戏运营活动中,也出现 ...
随机推荐
- iOS:iOS开发中用户密码保存位置
原文来自简书:http://www.jianshu.com/p/4af3b8179136/comments/1294203 如果要实现自动登录,不必每次打开应用都去登录,我们势必要把密码保存到本地.一 ...
- 利用反射把查询到的Table、Reader转换成List、Model
菜鸟一枚,入园已有两年三个月,这还是第一次写博客,请各位大神斧正. 这是我写的一个工具类,通常我们从数据库查询到一个 DataReader 或者是 一个 Table , 想要转换成 一个 lis ...
- gif图简介
多媒体教程 - GIF 图 GIF 是在 Web 上使用的主要图像格式之一. 本文详细讲解了 GIF 图像的特性和使用技巧. 理解图像格式 无论是 HTML 还是 XHTML 都没有规定图像的官方格式 ...
- ArcGIS JS Demo
最近在用 ArcGIS 写了一个Demo 效果如下: 1. 引用 ArcGIS JS API arcgis_js_api/init.js 2. 引用 样式 arcgis_js_api/js/esri/ ...
- 如何给html元素的onclick事件传递参数(即如何获取html标签的data-*属性)
现在做的一个小系统为了达到领导所说的很炫的效果有用到Metro UI CSS,但是因为如何给每个磁贴(div标签)的click事件传递参数折腾了蛮久(偶是菜鸟),后来终于找到一个解决方案即通过data ...
- HTML5 程序设计笔记(一)
HTML5 概述 1.html5 发展史 1993年html首次以因特网草案形式发布. 20世纪90年代,html大幅发展,从2.0版,到3.2版和4.0版.最后到1999年的4.01版. 伴随htm ...
- 看es6 字符串新方法有感
'x'.repeat(3) // "xxx" 'hello'.repeat(2) // "hellohello" 'na'.repeat(0) // " ...
- input 标签的class 失效
今天CSS网页的是时候,动态添加input class属性失效, 检查原因是因为之前对此input 使用了 input[type='checkbox'] 应该给其定义一个CLASS,其后面动态添加C ...
- bitVector@ java bit自我practice##Q&A:为何int 来初始化size of bitVector?long,甚至是BigInteger等策略
/* * BitSets are packed into arrays of "words." Currently a word is * a long, which consis ...
- vs2008生成的各种文件
一.sln文件 .sln(Solution)解决方案文件,表示一个项目组,他通常包含一个项目中所有的工程文件信息. 二.suo文件 suo(Solution User Option ...