Restaurant & Cooking Starter Kit v1.2.1
项目:
using UnityEngine; using System.Collections; namespace VoidGame { public class Constant : MonoBehaviour { public static string m_plateTag = "Plate"; //碟标签 public static string m_ingredientTag = "Ingredient"; //原材料标签 public static string m_trashBinTag = "TrashBin"; //垃圾桶标签 public static string m_customerTag = "Customer"; //客户标签 public static string m_dragTag = "Drag"; //拖动的标签 public static string m_dragSortingLayer = "Drag"; //拖动的排序层 public static string m_uiSortingLayer = "UI"; //UI的排序层 ; //在盘子中的原材料上限 } }
Constant
using UnityEngine; using System.Collections; namespace VoidGame { public class Customer : MonoBehaviour { public Product m_product; //客户需要的产品 public AudioClip m_deliverySuccessAudioClip; //交付成功音乐 public AudioClip m_deliveryFailedAudioClip; //交付失败音乐 private GameManager m_gameManager; private SpriteRenderer m_customerSpriteRenderer; //客户精灵渲染器 private SpriteRenderer m_productSpriteRenderer; //产品精灵渲染器 private SpriteRenderer[] m_ingredientSpriteRenderers; //原料精灵渲染器 private AudioSource m_audioSource; //音乐 void Start() { m_gameManager = GameManager.m_instance; m_audioSource = GetComponent<AudioSource>(); InitProduct(); LoadProductAndIngredientsImage(); } //初始化产品 void InitProduct() { m_product = new Product(); m_product.m_productID = Random.Range(,); m_product.m_productPrice = Random.Range(,); ,); m_product.m_totalIngredients = new int[ingredientCount]; ;i < ingredientCount;i++) { m_product.m_totalIngredients[i] = Random.Range(,); } } //加载产品和原料图片 void LoadProductAndIngredientsImage() { m_ingredientSpriteRenderers = new SpriteRenderer[m_product.m_totalIngredients.Length]; SpriteRenderer[] spriteRenderers = transform.GetComponentsInChildren<SpriteRenderer>(); m_customerSpriteRenderer = spriteRenderers[]; m_productSpriteRenderer = spriteRenderers[]; m_productSpriteRenderer.sprite = m_gameManager.m_productSprites[m_product.m_productID - ]; ;i < m_product.m_totalIngredients.Length;i++) { m_ingredientSpriteRenderers[i] = spriteRenderers[i + ]; } ;i < spriteRenderers.Length;i++) { spriteRenderers[i].sprite = null; } ;i < m_ingredientSpriteRenderers.Length;i++) { m_ingredientSpriteRenderers[i].sprite = m_gameManager.m_ingredientSprites[m_product.m_totalIngredients[i]]; m_ingredientSpriteRenderers[i].transform.localScale = ); } } void OnTriggerEnter2D(Collider2D other) { //盘子移动到客户上 if(other.CompareTag(Constant.m_plateTag)) { m_gameManager.m_dragPlateArrivedCustomer = true; Color newColor = m_customerSpriteRenderer.material.color; newColor.a = 0.5f; m_customerSpriteRenderer.material.color = newColor; } } void OnTriggerExit2D(Collider2D other) { //盘子离开客户 if(other.CompareTag(Constant.m_plateTag) && m_gameManager.m_dragPlateArrivedCustomer) { m_gameManager.m_dragPlateArrivedCustomer = false; Color newColor = m_customerSpriteRenderer.material.color; newColor.a = 1f; m_customerSpriteRenderer.material.color = newColor; } } //客户检查原料是否正确 public void CheckPlate() { //获取盘子里的原料列表 Ingredient[] ingredients = FindObjectOfType<Plate>().GetComponentsInChildren<Ingredient>(); bool isMatch = true; if(ingredients.Length == m_product.m_totalIngredients.Length) { ;i < ingredients.Length;i++) { ;j < m_product.m_totalIngredients.Length;j++) { if(ingredients[i].m_ingredientID == m_product.m_totalIngredients[j]) { Debug.Log(); break; } ) { isMatch = false; } } if(!isMatch) { break; } } } else { isMatch = false; } if(isMatch) { if(!m_audioSource.isPlaying) { m_audioSource.clip = m_deliverySuccessAudioClip; m_audioSource.Play(); } } else { if(!m_audioSource.isPlaying) { m_audioSource.clip = m_deliveryFailedAudioClip; m_audioSource.Play(); } } InitProduct(); LoadProductAndIngredientsImage(); ;i >= ;i--) { Destroy(m_gameManager.m_ingredientsInPlate[i]); m_gameManager.m_ingredientsInPlate.RemoveAt(i); } } } }
Customer
using UnityEngine; using System.Collections; using System.Collections.Generic; namespace VoidGame { public class GameManager : MonoBehaviour { public static GameManager m_instance; //单例 public GameObject m_ingredientBackgroundPrefab; //原料背景预设 public List<GameObject> m_ingredients; //原料预设列表 public List<Sprite> m_productSprites; //产品精灵列表 public List<Sprite> m_ingredientSprites; //原料精灵列表 [HideInInspector] public GameObject m_dragIngredient; //拖动中的原材料 [HideInInspector] public bool m_dragIngredientArrived = false; //原材料是否到达碟内 [HideInInspector] public bool m_dragPlateArrivedTrashBin = false; //盘子是否到达垃圾桶 [HideInInspector] public bool m_dragPlateArrivedCustomer = false; //盘子是否到达客户 [HideInInspector] public List<GameObject> m_ingredientsInPlate = new List<GameObject>(); //在盘子中的原材料 private void Awake() { m_instance = this; } private void Start() { GenerateIngredientBackground(); } //生成原料背景和原料 private void GenerateIngredientBackground() { Transform ingredientParentTransform = transform.Find("/Ingredients"); Transform ingredientBackgroundParentTransform = transform.Find("/Background/IngredientsBackground"); Vector3 newPosition = ingredientBackgroundParentTransform.position; newPosition.y = ingredientBackgroundParentTransform.position.y + ; ;i < ;i++) { newPosition.x = ingredientBackgroundParentTransform.position.x - ; newPosition.y--; ;j < ;j++) { newPosition.x++; GameObject ingredientBackground = GameObject.Instantiate(m_ingredientBackgroundPrefab,newPosition,Quaternion.identity,ingredientBackgroundParentTransform) as GameObject; GameObject.Instantiate(m_ingredients[i * + j],newPosition,Quaternion.identity,ingredientParentTransform); } } } } }
GameManager
using UnityEngine; using System.Collections; namespace VoidGame { public class Ingredient : MonoBehaviour { public int m_ingredientID; //原料ID private AudioSource m_audioSource; private GameManager m_gameManager; private void Start() { m_gameManager = GameManager.m_instance; m_audioSource = GetComponent<AudioSource>(); } protected void Update() { if(m_gameManager.m_dragIngredient != null) { FollowCursor(); } } //点击原材料,创建一个相同的可拖动的原材料 private void OnMouseDown() { if(m_gameManager.m_ingredientsInPlate.Count < Constant.m_maxIngredientsInPlate) { CreateDragIngredient(); } } //抬起鼠标时原料在盘子里,将原料设置为盘子的子对象. //抬起鼠标时原料不在盘子里,删除这个原料 private void OnMouseUp() { if(m_gameManager.m_dragIngredient != null && m_gameManager.m_dragIngredientArrived) { GameObject plate = GameObject.FindGameObjectWithTag(Constant.m_plateTag); m_gameManager.m_dragIngredient.transform.SetParent(plate.transform); m_gameManager.m_dragIngredient.transform.position = plate.transform.position; m_gameManager.m_dragIngredient.GetComponent<BoxCollider2D>().enabled = false; m_gameManager.m_dragIngredient.transform.localScale = ); m_gameManager.m_ingredientsInPlate.Add(m_gameManager.m_dragIngredient); m_gameManager.m_dragIngredient = null; m_gameManager.m_dragIngredientArrived = false; } else { Destroy(m_gameManager.m_dragIngredient); m_gameManager.m_dragIngredient = null; } } //创建可拖动的原材料 private void CreateDragIngredient() { Vector3 newPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); newPosition.z = ; m_gameManager.m_dragIngredient = Instantiate(gameObject,newPosition,Quaternion.identity) as GameObject; m_gameManager.m_dragIngredient.GetComponent<SpriteRenderer>().sortingLayerName = Constant.m_dragSortingLayer; //m_gameManager.m_dragIngredient.GetComponent<SpriteRenderer>().tag = Constant.m_dragTag; if(!m_audioSource.isPlaying) { m_audioSource.Play(); } } //原材料跟随鼠标 private void FollowCursor() { Vector3 newPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); newPosition.z = ; m_gameManager.m_dragIngredient.transform.position = newPosition; } } }
Ingredient
using UnityEngine; using System.Collections; namespace VoidGame { public class Plate : MonoBehaviour { private Vector3 m_originPosition; //原始位置 private GameManager m_gameManager; private SpriteRenderer m_spriteRenderer; private void Start() { m_gameManager = GameManager.m_instance; m_spriteRenderer = GetComponent<SpriteRenderer>(); m_originPosition = transform.position; } private void OnTriggerEnter2D(Collider2D other) { //原料移动到盘子上 if(other.CompareTag(Constant.m_ingredientTag)) { m_gameManager.m_dragIngredientArrived = true; //盘子移动到垃圾桶上 } else if(other.CompareTag(Constant.m_trashBinTag)) { Color newColor = m_spriteRenderer.material.color; newColor.a = 0.5f; m_spriteRenderer.material.color = newColor; //盘子移动到客户身上 } else if(other.CompareTag(Constant.m_customerTag)) { Color newColor = m_spriteRenderer.material.color; newColor.a = 0.5f; m_spriteRenderer.material.color = newColor; } } private void OnTriggerExit2D(Collider2D other) { //原料离开盘子 if(other.CompareTag(Constant.m_ingredientTag) && m_gameManager.m_dragIngredientArrived) { m_gameManager.m_dragIngredientArrived = false; //盘子离开垃圾桶 } else if(other.CompareTag(Constant.m_trashBinTag)) { Color newColor = m_spriteRenderer.material.color; newColor.a = 1f; m_spriteRenderer.material.color = newColor; //盘子离开客户 } else if(other.CompareTag(Constant.m_customerTag)) { Color newColor = m_spriteRenderer.material.color; newColor.a = 1f; m_spriteRenderer.material.color = newColor; } } //如果盘子里有原料,修改排序层. private void OnMouseDown() { ) { m_spriteRenderer.sortingLayerName = Constant.m_dragSortingLayer; } } //如果盘子里有原料,可以拖动.如果盘子里没材料,不可以拖动 private void OnMouseDrag() { ) { Vector3 newPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); newPosition.z = ; transform.position = newPosition; } } //如果盘子在垃圾桶里,删除盘子里的原料 private void OnMouseUp() { if(m_gameManager.m_dragPlateArrivedTrashBin) { TrashBin trashBin = FindObjectOfType<TrashBin>(); trashBin.ClearIngredientInPlate(); } else if(m_gameManager.m_dragPlateArrivedCustomer) { Customer customer = FindObjectOfType<Customer>(); customer.CheckPlate(); } transform.position = m_originPosition; m_spriteRenderer.sortingLayerName = Constant.m_uiSortingLayer; } } }
Plate
using UnityEngine; using System.Collections; namespace VoidGame { [System.Serializable] public class Product { public int m_productID; //产品ID public int m_productPrice; //产品价格 public int[] m_totalIngredients; //产品需要的原料ID } }
Product
using UnityEngine; using System.Collections; namespace VoidGame { public class TrashBin : MonoBehaviour { private GameManager m_gameManager; private GameObject m_plate; //盘子 private AudioSource m_audioSource; private SpriteRenderer m_spriteRenderer; private void Start() { m_gameManager = GameManager.m_instance; m_audioSource = GetComponent<AudioSource>(); m_spriteRenderer = GetComponent<SpriteRenderer>(); m_plate = GameObject.FindGameObjectWithTag(Constant.m_plateTag); } //盘子移动到垃圾桶上 private void OnTriggerEnter2D(Collider2D other) { if(other.CompareTag(Constant.m_plateTag)) { m_gameManager.m_dragPlateArrivedTrashBin = true; Color newColor = m_spriteRenderer.material.color; newColor.a = 0.5f; m_spriteRenderer.material.color = newColor; } } //盘子离开垃圾桶 private void OnTriggerExit2D(Collider2D other) { if(other.CompareTag(Constant.m_plateTag) && m_gameManager.m_dragPlateArrivedTrashBin) { m_gameManager.m_dragPlateArrivedTrashBin = false; Color newColor = m_spriteRenderer.material.color; newColor.a = 1f; m_spriteRenderer.material.color = newColor; } } //清除盘子里的原材料 public void ClearIngredientInPlate() { ;i >= ;i--) { Destroy(m_gameManager.m_ingredientsInPlate[i]); m_gameManager.m_ingredientsInPlate.RemoveAt(i); } if(!m_audioSource.isPlaying) { m_audioSource.Play(); } } } }
TrashBin
Restaurant & Cooking Starter Kit v1.2.1的更多相关文章
- Restaurant & Cooking Starter Kit v1.2.1 学习
项目: using UnityEngine; using System.Collections; namespace VoidGame { public class Constant : MonoBe ...
- Microsoft IoT Starter Kit 开发初体验
1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费开放1000套的申请.申请地址为:http:// ...
- asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop)学习资料
asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop)学习资料 NET Pet Shop .NET Pet Shop是一个电子商务的实例, ...
- Microsoft IoT Starter Kit 开发初体验-反馈控制与数据存储
在上一篇文章<Microsoft IoT Starter Kit 开发初体验>中,讲述了微软中国发布的Microsoft IoT Starter Kit所包含的硬件介绍.开发环境搭建.硬件 ...
- React Starter Kit 中文文档
最近没事又翻译了个玩意. Github上的一个Star 非常高的 React 样板程序. 由Node.js,Express,GraphQL和React构建,可选加入Redux等,并可以包含Webpac ...
- Window 64bit环境搭建Web Starter Kit
最近在学习https://developers.google.com/web/fundamentals/这里的内容,其中就有一部分是安装Web Starter Kit的教程,我总结一下自己的安装过程. ...
- Unity Game Starter Kit for Windows Store and Windows Phone Store games
原地址:http://digitalerr0r.wordpress.com/2013/09/30/unity-game-starter-kit-for-windows-store-and-window ...
- Microsoft IoT Starter Kit
Microsoft IoT Starter Kit 开发初体验 1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter K ...
- 介绍使用Cordova和Web Starter Kit开发Android
介绍 如今,每个人都想制作移动应用程序,为什么不呢?世界上有更多的移动设备比任何其他用户设备.Android尤其流行,但是为什么不从一个众所周知的跨平台应用的基础开始呢?Android的开发显然比其他 ...
随机推荐
- cocos2d(x) HTML label ;CCHTML CCHTMLLabel
这几天由于特殊需要,写了一个HTMLLabel.可以直接支持HTML的几种格式,<font> <a href> color size 等等. 参考object C的一个ios开 ...
- JavaScript 中 if 条件判断
在JS中,If 除了能够判断bool的真假外,还能够判断一个变量是否有值. 下面的例子说明了JS中If的判断逻辑: 变量值 true '1' 1 '0' 'null' 2 '2' false 0 n ...
- java mysql 数据类型对照
java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang. ...
- vsftpd.conf 详解与实例配置
#################匿名权限控制############### anonymous_enable=YES #是否启用匿名用户 no_anon_password=YES #匿名用 ...
- String与string的区别(注意大小写)
在C#编程过程中经常见到string和String,下面来看看它们之间的区别: 1. string是C#中的类, String是.net Framework的类. string是String的别名,S ...
- Python 函数简介 之二
1.当函数有多个返回值时, 其多个返回值将以元组的形式出现 def test1(): print("in the test1") return 'end' def test2(): ...
- FragmentTransation中的remove和detach有什么区别?
remove(): 从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁; detach(): 会将vi ...
- session fixation
转自:session fixation攻击 什么是session fixation攻击 Session fixation有人翻译成"Session完成攻击",实际上fixation ...
- Lua 日志
Lua 环境安装 编辑调试Lua脚本
- zabbix 安装配置以及漏洞检测脚本
最近zabbix爆出sql注入漏洞.之前一直没装过.就想着来安装一次.我在centos配置玩玩,记录一下:1.安装LAMP yum -y install httpd mysql mysql-ser ...