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 在IOS6中设置navigationBar背景图片 会有一条 黑色阴影 --- 解决方案
//给navigationBar设置背景图片 if ([self.navigationController.navigationBar respondsToSelector:@selector(set ...
- struts2 测试错题解析
解析:$.parseJSON()方法是将字符串转换成Json类型数据,$.getJSON()方法是获取JSON数据,两者不用联合使用. 解析: A:ActionContext接口没有getReques ...
- Lua与C/C++交互问题
初学lua,遇到注册C/C++交互函数问题 在lua与C/C++交互时,C/C++的注册Lua函数若是一个有返回类型(压栈)而不是获取类型的时候应该返回1而不是返回0,否则会出现在Lua中值为nil( ...
- 将requirejs进行到底(一)
随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用.单元测试等等一系列复杂的需求 ...
- HTML5 程序设计笔记(一)
HTML5 概述 1.html5 发展史 1993年html首次以因特网草案形式发布. 20世纪90年代,html大幅发展,从2.0版,到3.2版和4.0版.最后到1999年的4.01版. 伴随htm ...
- excel快递单号查询工具以及源码
Function kdcx(kd, orderid) Dim Err, url, kdtime, link, Errcode, Status Select Case kd '此处支持的快递公司很多的 ...
- Android Binder机制简单了解
Binder -- 一种进程间通信(IPC)机制, 基于OpenBinder来实现 毫无疑问, 老罗的文章是不得不看的 Android进程间通信(IPC)机制Binder简要介绍和学习计划 浅谈Ser ...
- Flex时间操作
小弟是Flex新手,最近一段时间领导要求使用Flex开发B/S的一些项目,需要用到时间上的一些操作.上网查询一番好多人都说不好操作,有的甚至非常麻烦.基于此,小弟整理了一些关于Flex时间操作的经验, ...
- javascript日用代码集合(一)
获取url参数 function get_url_param(name){ var reg = new RegExp("(^|&)" + name + "=([^ ...
- http server v0.1_http_reponse.c
#include <string.h> #include <sys/stat.h> #include <sys/mman.h> #include <fcntl ...