Unity实现弹球打砖块游戏
作者:璐希法 发布时间:2021-09-24 16:13:08
标签:Unity,弹球,打砖块
本文实例为大家分享了Unity实现弹球打砖块游戏的具体代码,供大家参考,具体内容如下
创作界面记录
摄像机
所需脚本
1射线shexian
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sheixian : MonoBehaviour {
public GameObject blit;//定义一个公共的游戏物体来当 *
AudioSource au;//定义一个au音效
// Use this for initialization
void Start () {
au = GetComponent<AudioSource>();//赋值音效
}
// Update is called once per frame
void Update () {
Ray ray;
RaycastHit hit;
//1.创建射线
//2.射线检测并反馈结果
//鼠标左键点击一个东西,然后反馈给我们物体信息
if (Input.GetMouseButtonDown(0))
{
//把摄像机屏幕点转化为线 获取鼠标坐标
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//创建射线
if (Physics.Raycast(ray, out hit))//第一个参数是射线,第二个是碰撞的物体
{
//定义一个bt承接实例化的 * , 对象实例化(实例化对象,位置[摄像机当前位置],不旋转)
GameObject bt = GameObject.Instantiate(blit, transform.position, Quaternion.identity);
au.Play();//播放音效
//给一个方向 点击位置的坐标-当前位置=一个向量;
Vector3 dis = hit.point - transform.position;
//给bt一个力
bt.GetComponent<Rigidbody>().AddForce(dis * 300);
}
}
}
}
把Sphere预制体拉入Blit框,添加Audio Source组件,AudioClip拉入 * 音效;取消Play On Awake
地板
给地板添加音乐来当背景音乐,再给个材质改变颜色
空物体copy
用来实例化砖块,挂载copysp脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class copysp : MonoBehaviour {
public GameObject ga;//定义一个游戏物体
// Use this for initialization
void Copy () { //实例化预制体
for (int i = 0; i < 25; i++)//用for循环来实现多个实例化
{
//定义一个随机向量 X坐标 ,Y坐标, Z坐标
Vector3 ve3 = new Vector3(Random.Range(-5.0f, 5.0f), 10.0f, Random.Range(-5.0f, 5.0f));
//实例化 实例化物体,位置,是否旋转(不旋转)
Instantiate(ga, ve3, Quaternion.identity);
}
}
void Start()
{
//延时多次调用 (调用的方法,延时几秒,隔几秒再次调用)
InvokeRepeating("Copy", 2, 6);
}
// Update is called once per frame
void Update () {
}
}
预制体Cube
给Box Collider一个反弹材质
***Unity物体碰撞时的反弹系数:也即Physic Material的 Bounciness属性。
一句话,给物体的Collider添加Material属性即可
1、首先,物体要有Collider(BoxCollider, SphereCollider,PolygonCollider等)
2、创建一个Physic Material
Asset -> Create->Physic Material
看到Bounciness这个属性,区间是0到1,可以小数,其他暂不动。
0值:没有弹力,1值:没有能量损失的反弹。
3、赋值给Collider的Material属性。
系统自带这几种物理材质
Bouncy:弹性材质。Ice:冰材质。Metal:金属材质。Rubber:橡胶材质。Wood:木头材质。*
如图
给一个Random Color脚本
using UnityEngine;
using System.Collections;
public class RandomColor : MonoBehaviour
{
// Use this for initialization
void Start()
{
//获取组件 材质.颜色
this.gameObject.GetComponent<MeshRenderer>().material.color = RandomColor1();//给游戏物体添加下方随机颜色方法
}
/*float timer;
//随着时间变换颜色
// Update is called once per frame
void Update()
{
timer -= Time.deltaTime;
if (timer <= 0)
{
this.gameObject.GetComponent<MeshRenderer>().material.color = RandomColor1();
timer = 1;
}
}*/
public Color RandomColor1()
{
float r = Random.Range(0f, 1f);
float g = Random.Range(0f, 1f);
float b = Random.Range(0f, 1f);
Color color = new Color(r, g, b);
return color;
}
}
给一个Cube销毁脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Cubexiaohui : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (this.transform.position.y < 0)//如果此物体的y坐标小于0,销毁此物体;
{
Destroy(this.gameObject);
}
else
{
Destroy(this.gameObject,100);//或者100秒后销毁
}
}
}
球体预制体Sphere
给个反弹材质,挂载随机颜色脚本,挂载xiaohui脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class xiaohui : MonoBehaviour {
AudioSource audio;//销毁的音效
// Use this for initialization
void Start () {
audio = GetComponent<AudioSource>();//承接一下音效组件
}
void OnCollisionEnter(Collision coll)//被碰撞的形参
{
if (coll.gameObject.tag == "Player")//如果碰到标签为"Player"的物体,就销毁它
{
audio.Play();//播放音效
Destroy(coll.gameObject);//销毁碰撞的物体
}
}
// Update is called once per frame
void Update () {
Destroy(this.gameObject, 10);//此物体十秒后自己消失
}
}
添加销毁音效,至此大功告成.
来源:https://blog.csdn.net/luxifa1/article/details/82494713


猜你喜欢
- ServletContext 基础知识获取 ServletContext对象有两种方式可以获取:使用 servletconfig 对象获取使
- JVM自带的类加载器:其关系如下:其中,类加载器在加载类的时候是使用了所谓的“父委托”机制。其中,除了根类加载器以外,其他的类加载器都有且只
- 在android编码中,会有一些简便的写法和编码习惯,会导致我们的代码有很多内存泄露的问题,在这里做一个已知错误的总结:1、编写单例的时候常
- 1,刚刚在别人开源的项目中看到了一个挺不错的用户体验,效果图如下:2,那下面我们就来实现一下,首先看一下布局,由于一般只是我们包含头像的那部
- @Bean修饰的方法参数的注入方法参数默认注入方式为Autowired,即先根据类型匹配,若有多个在根据名称进行匹配。1:复杂类型可以通过@
- 机器跑了一晚上,发现有崩溃现象,由于页面内有动态绘图功能,我怀疑是绘图原因,但是今天上午有人提醒我才想到,是不是间隔调用时DWR产生了内存泄
- Unity没有像Vs那样的“*.sln”的项目工程文件,不能通过这个文件来打开工程。但是原有的打开已有工程的方法太过于麻烦了,则现在来通过添
- 双保险线程,每次启动2个相同的线程,互相检测,避免线程死锁造成影响。两个线程都运行,但只有一个线程执行业务,但都会检测对方的时间戳 如果时间
- android在网络上下载文件,供大家参考,具体内容如下步骤: 1.使用HTTP协议下载文件- 创建一个HttpURLConnection对
- 我们用React Native 做混合开发的时候免不了要原生和React Native 进行通信交互,这篇文章就是分享原生模块与JS传递数据
- 在使用STL容器(比如map、list、vector等)的时候,是用放一个对象还是放一个对象指针,即是用vector<int>还
- 获取手机唯一标识 拼接的方式获取手机唯一标识第一种方式是获取IMEI,但是有的手机如果不是正品的话,就获取不到所以通过这一种方式还是会出现有
- 各位早上好,话不多说,先上效果图:注意顶部:首页TextView的变化(显示和隐藏)!首先分析下:UI状态,其是由RecyclerView添
- Netty设置为Https访问SSLContextFactorypublic class SSLContextFactory {
- 本文实例讲述了C#基于委托实现多线程之间操作的方法。分享给大家供大家参考,具体如下:有的时候我们要起多个线程,更多的时候可能会有某个线程会去
- 本文实例讲述了java实现的DES加密算法。分享给大家供大家参考,具体如下:一、DES加密算法介绍1、要求密钥必须是8个字节,即64bit长
- 前文传送门:NioEventLoop处理IO事件执行任务队列继续回到NioEventLoop的run()方法:protected void
- 目录堆内存溢出原因:解决方案:栈内存溢出原因:解决方案:方法区和运行时常量池内存溢出原因:本机直接内存溢出原因:解决方案:元空间内存溢出原因
- @PropertySource注解是Spring用于加载配置文件,默认支持.properties与.xml两种配置文件。@PropertyS
- Android 仿微信的键盘切换(录音,表情,文字,其他),IM通讯,类似朋友圈只要涉及到文字等相关的app都会要涉及到键盘的处理,今天就给