一、水果模型导入

1、导入.fbx文件并设置缩放

2、将其拖入到Assets中作为prefeb

二、设置水果生成机制

1、给水果添加Rigidbody组件,设置使用重力

2、为了允许碰撞,添加Mesh Collider组件,勾选Convex

3、删除场景中的水果模型

4、编写脚本SpawnPoint

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SpawnPoint : MonoBehaviour {//水果数组public GameObject[] fruitPreb;// Use this for initializationvoid Start () {StartCoroutine(createFruit());}//生成水果IEnumerator createFruit(){while (true){//随机生成一种水果GameObject fruitClone = Instantiate(fruitPreb[Random.Range(0,fruitPreb.Length)]);Rigidbody rb = fruitClone.GetComponent<Rigidbody>();rb.velocity = new Vector3(0,8.0f,0);                                                                            //重力上的速度rb.angularVelocity = new Vector3(Random.Range(-5f,5f),0,Random.Range(-5f,5f));                                  //角度上的速度Vector3 pos = transform.position;                                                                               //生成点的位置pos.x += Random.Range(-0.5f, 0.5f);                                                                                 //生成点附近随机的一个位置                fruitClone.transform.position = pos;                                                                            //将随机位置赋给生成的水果yield return new WaitForSeconds(3f);}}// Update is called once per framevoid Update () {}
}

给生成点挂载脚本,给数组赋值

5、运行后可以看到在随机位置生成随机一种水果

三、切割水果

1、导入切割水果模型的包

2、编写脚本SwordCutter,并将其挂载到左右武士刀上

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SwordCutter : MonoBehaviour {//切面材质public Material capMat;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}private void OnTriggerEnter(Collider other){}private void OnCollisionEnter(Collision collision){GameObject victim = collision.gameObject;//切割后返回的碎片GameObject[] pieces = BLINDED_AM_ME.MeshCut.Cut(victim,transform.position,transform.right,capMat);//第一个参数是原来的模型,第二个参数是切割后的模型,如果没有Rigidbody会悬浮在空中,所以添加Rigidbody和MeshCollider//由于模型会被二次切割,所以convex设置为trueif (!pieces[1].GetComponent<Rigidbody>()){pieces[1].AddComponent<Rigidbody>();pieces[1].AddComponent<MeshCollider>().convex = true;}//对切开的水果两部分进行延时销毁Destroy(pieces[0],5.0f);Destroy(pieces[1], 5.0f);}
}

3、添加水果切片的模型脚本,并设置先关属性

四、设置上升和下降过程中的水果不发生碰撞

1、在unity的物理系统当中,是可以控制不同层级上的物体的是否进行碰撞检测的,Edit-->Project Setting-->Physics,这里有个矩阵,横向和纵向代表了不同的图层,如果取消勾选的话说明该物体不参与碰撞,所以只需要将水果放在一个图层上面,在这里进行设置就可以了

2、选中水果,layer-->add layer-->fruit

3、返回场景,将水果添加进图层fruit

4、Edit-->Project Settings-->Physics,在矩阵中多了fruit这一图层,取消勾选该图层,这个图层上的所有内容都将不会发生碰撞,这样水果之间就不会发生自身的碰撞了

五、对不用的水果进行销毁

1、将销毁水果的脚本添加到水果之上

2、脚本内容

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Fruit : MonoBehaviour {// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {if (transform.position.y < -50f)Destroy(this.gameObject);}}

3、将脚本挂载到水果上


六、运行结果

注:1、为了保证切开后的水果与原来的模型缩放后的值保持一致,修改脚本MeshCut,在223行添加设置localScale值

2、遇到的问题,左右武士刀、水果都添加了Rigidbody和MeshCollider,并且勾选了convex,但是OnCollisionEnter方法没有调用

原因:不清楚,可能是Mesh Collider的大小不对,但是没有找到修改大小的方法

解决办法:去掉MeshCollider,添加boxcollider

水果忍者VR原型 二相关推荐

  1. Kinect SDK 正式版(二)骨骼追踪,实现PC版体感水果忍者

    这篇来介绍一下几个正式版SDK提供的新特性,还有比较被主流应用的骨骼数据操作. 首先先介绍一个新特性,Kinect角度调整,继续上篇的项目工程,在界面上添加两个控件,一个下拉列表,一个按钮. < ...

  2. 2017级C语言大作业 - 水果忍者

    水果忍者 C语言作业 分享17级同学大一上学期用C语言实现的水果忍者.分步骤代码.图片音乐素材.可执行程序可从百度网盘下载: 链接:https://pan.baidu.com/s/1i-e_MVChl ...

  3. L3-012 水果忍者 (30 分)-PAT 团体程序设计天梯赛 GPLT

    2010年风靡全球的"水果忍者"游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与炸弹,玩家尽可能砍掉所有的水果而避免砍中炸弹,就可以 ...

  4. 【CCCC】L3-012 水果忍者 (30分),,枚举斜率

    problem L3-012 水果忍者 (30分) 2010年风靡全球的"水果忍者"游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与 ...

  5. 水果忍者(数学 叉积)

    水果忍者 题目 2010年风靡全球的"水果忍者"游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与炸弹,玩家尽可能砍掉所有的水果而避免 ...

  6. 7-45 水果忍者 (30 point(s))

    2010年风靡全球的"水果忍者"游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与炸弹,玩家尽可能砍掉所有的水果而避免砍中炸弹,就可以 ...

  7. L3-012 水果忍者 (30 分)

    2010年风靡全球的"水果忍者"游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与炸弹,玩家尽可能砍掉所有的水果而避免砍中炸弹,就可以 ...

  8. L3-012 水果忍者

    题目: 2010年风靡全球的"水果忍者"游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与炸弹,玩家尽可能砍掉所有的水果而避免砍中炸弹 ...

  9. 用Python写了一个水果忍者小游戏

    点击上方"菜学Python",选择"星标"公众号 超级无敌干货,第一时间送达!!! 水果忍者的玩法很简单,尽可能的切开抛出的水果就行. 今天小五就用python ...

最新文章

  1. overridePendingTransition 方法在Fragment 中使用
  2. 微软:Visual Studio2010能驱动世界
  3. 012_CSS相邻兄弟选择器
  4. jQuery学习笔记1--表格展开关系
  5. python函数体以冒号起始、并且是缩进格式的_Python基础第三课
  6. Ubuntu下载gitea
  7. Hibernate type 与java 和 数据库类型对应
  8. checkbox居中 editor_radio 或 CheckBox 关联 其他元素 整体选择
  9. python如何快速导入未安装模块_如何导入安装在sitepackages中的模块
  10. JS动态修改页面EasyUI datebox不生效、EasyUI动态添加Class、EasyUI动态渲染解析解决方案
  11. mysql的架构及查询sql的执行流程(二)
  12. 4线-2线优先编码器
  13. 新手初步--Springmvc
  14. 怼天怼地的马斯克道歉了?
  15. 支付网关潜藏黑客!32万多含CVV码的财务信息被盗
  16. 两个正数相乘或相加,为什么结果是负数。/Java基本数据类型介绍
  17. 有意思的shell命令行提示符
  18. ”微信小程序“一场风暴还是过江之鲫
  19. 服务器上Ubuntu系统的java依赖安装
  20. nvme分区选mbr还是guid_win10 双系统 Ubuntu UEFI+GPT bios+mbr 理论与实践

热门文章

  1. 数据集成-5-批数据集成
  2. 由左右相机图像点重建三维点
  3. 计算机通信中ip,macid的主要作用和区别
  4. 项目动态|Apache Pulsar 2.10.0 版本介绍
  5. 购买重疾险是不是都要先去体检?千万不要!
  6. python ip地址转换
  7. 流浪日记无限金币html,流浪日记无敌版金钱版
  8. 个人开发者只要一行代码接入微信支付和支付宝支付
  9. Codeforces 1744B. Even-Odd Increments
  10. 2020年中国无缝钢管行业发展现状及竞争格局分析,天津钢管产量领先,居国内首位「图」