之前做大作业的时候做了一个小卖部的场景,里面有一些想法还是想记录一下。

结果

左下角显示余额,每选择一个物品时钱会减少,并且这个物品会移到左边的购物袋内,若钱不够则会进行提示。怎样能够让玩家在选择一个物品后钱会变少,这个问题想了好久才解决,我可能智商不太够吧…

步骤

  1. 布置好场景,其中商店+物品是此场景的背景,另外还需要每一个物品的png图片,布置在背景中该物品位置上,如图:
  2. 新建一个空物体,命名为Goods,将所有商品列为Goods的子物体:
  3. 新建脚本GoodsController,用于控制每个商品的移动、余额减少等,先来控制商品移动——先把商品的透明度都设为0,当某商品被点击时,克隆该商品用于下一次点击,透明度变为1,然后移动到购物袋处,透明度再变为0.7,同时移动过程中商品变小(移动过程中透明度和大小的变化都可以不要,这些是为了游戏体验更好做的):
private Vector3 start;//初始位置
private Vector3 cur;//当前位置
private Vector3 end;//末位置
private bool canMove;//判断物品是否可以移动
private float speed;
private GameObject cloneGameObject;//克隆得到的物体public float endRangeXMin, endRangeXMax, endRangeYMin, endRangeYMax;//在 某范围内 随机末位置
public float x;//物体移动时大小变化的倍数void Awake()
{GetComponent<Renderer>().material.color = new Color(1.0f, 1.0f, 1.0f, 0.0f);//初始时物体透明start = transform.position;//获取初始位置cur = start;end = new Vector3(Random.Range(endRangeXMin,endRangeXMax),Random.Range(endRangeYMin,endRangeYMax),start.z);//取得末位置canMove = false;//物品不可以移动speed = 14.0f;
}// Update is called once per frame
void Update()
{if (canMove){GetComponent<Renderer>().material.color = new Color(1.0f, 1.0f, 1.0f, 1.0f);transform.position = Vector3.MoveTowards(cur, end, speed * Time.deltaTime);transform.localScale *= x;//一边移动一边变小}cur = transform.position;if(transform.position==end)//物体移到购物袋后{GetComponent<Renderer>().material.color = new Color(1.0f, 1.0f, 1.0f, 0.7f);//透明度改变canMove = false;//物体不再能移动,大小也不再改变}
}public void OnMouseDown()
{cloneGameObject = GameObject.Instantiate<GameObject>(gameObject);//克隆物体canMove = true;//点击后物体可以移动
}
  1. 然后控制剩下的钱数——在场景中添加Text,命名为Balance,再给Goods添加脚本Balance,用于一开始时随机生成钱数:
using System.Collections;
using System.Collections.Generic;
using UnityEngine.EventSystems;
using UnityEngine;
using UnityEngine.UI;public class Balance : MonoBehaviour
{public Text balanceText;public float balance;//余额// Start is called before the first frame updatevoid Start(){balance = (float)Random.Range(1, 99) + Random.Range(0.1f, 0.9f);balanceText.text = "我还剩" + "\r\n" + string.Format("{0:f1}",balance) + "元";}
}

保存后把Text Balance添加给balanceText;

  1. 打开GoodsController脚本,添加代码和条件来连接剩下的钱数:
private float[] price = { 0.5f, 50.0f, 2.0f, 2.0f, 4.0f, 5.0f, 10.0f, 1.0f, 70.0f, 1.5f, 0.5f, 0.5f};public int number;
public Balance balance;
public Text balanceText;public void OnMouseDown()
{if (balance.balance < price[number])//钱不够后不可以移动(购买){canMove = false;balanceText.text = "钱不够了";}else{cloneGameObject = GameObject.Instantiate<GameObject>(gameObject);//克隆物体canMove = true;//点击后物体可以移动balance.balance -= price[number];balanceText.text = "我还剩" + "\r\n" + string.Format("{0:f1}", balance.balance) + "元";}
}
  1. 把GoodsController添加给所有商品,并为相应属性赋值(以第一个辣条为例):
  2. 左下角按钮用于退回其他场景。
  3. 效果:
    初始时——

    买了几件物品后——

    此时再去点击70元的耳机——

【Unity】制作一个商店场景相关推荐

  1. RayFire for Unity制作一个可以被击碎的岩石

    RayFire for Unity制作一个可以被击碎的岩石 1.导入名字为Rock_05的Prefab 2.添加脚本 Rayfire Shatter,选择一个type,然点击Fragment,这时可以 ...

  2. 【游戏开发创新】手把手教你使用Unity制作一个高仿酷狗音乐播放器,滨崎步,旋律起,爷青回(声音可视化 | 频谱 | Audio)

    文章目录 一.前言 二.获取UI素材 三.使用UGUI制作界面 1.界面布局 2.账号圆形头像 3.搜索框 4.调节UI层 5.黑色按钮悬浮高亮效果 6.纯文字按钮 7.滚动列表自适应 8.歌名与视频 ...

  3. 用Unity制作一个很火的找不同游戏,包括核心玩法与关卡编辑器工具的实现

    玩家们心里都清楚,其实游戏的品类超级多,有些人喜欢玩moba.射击竞技类的,有些人喜欢塔防.策略.回合制类的,而又有些人喜欢经营养成.休闲益智类的.休闲益智类游戏,虽没像moba类游戏的激烈操作带来的 ...

  4. Unity制作一个望远镜与查看器摄像机

    Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机 Unity中制作一个望远镜 本节制作的望远镜,在鼠标左键按下时,看到的视图会变大:当不再按下的时候,会慢慢缩小成原来的视图.游戏中时常出现的 ...

  5. 使用Unity制作一个简单的聊天室

    使用控制台作为一个服务器,在Unity中开发客户端,制作一个简易的聊天室,无论哪个客户端发送消息,其他的客户端都会实时的显示出来. 服务器代码 using System; using System.C ...

  6. unity制作一个可以自由滑动收缩的历史记录功能。

    公司在做一款模拟经营类的卖车游戏,需要一个简单的历史记录功能,放在左上角,记录最近20条的收入/支出记录.超过2秒不动则收起.收起时展示最近的一个消息记录. 用到的组件是ScrollView,使用方法 ...

  7. 手把手教你使用Unity制作一个飞机喷射火焰尾气的粒子效果

    文章目录 零.最终效果 一.飞机模型 二.飞机喷射火焰尾气制作 1.贴图 2.材质球 3.创建粒子 3.设置粒子的Renderer,将材质球赋值给粒子 4.设置粒子的Shape,调整喷射区域和角度 5 ...

  8. 如何用unity制作一个桌面宠物?

    unity版本为:2018.3.14 1.找到带动画模型 获取途径: ① unity官方有免费模型和付费模型. ② 有mmd转unity的转换器. 我使用的是"Little Heroes M ...

  9. 用unity制作一个智能机器人程序

    使用Unity来制作智能机器人程序可以不仅仅局限于2D游戏,也可以构建3D游戏.虚拟现实和模拟环境.Unity提供了一组强大的工具,帮助你构建虚拟机器人,从而实现复杂的AI及机器人行为.它还可以提供可 ...

  10. unity 制作的app发布到andriod手机

    一,unity 制作一个简单的动画. 1.场景中添加一个立方体. 2.立方体上面添加一个胶囊形状,胶囊形状添加重力属性,运行的时候往下落. 3.制作完成,保存工程,名字为"t1". ...

最新文章

  1. 用x86的模拟器内核记得安装intel的haxm
  2. 用python自动化做ecshop测试_Python-自动化测试面试
  3. Spring xml 注入静态变量
  4. 谈谈NITE 2与OpenCV结合的第二个程序(提取人体骨骼坐标)
  5. oracle+restore+pfile,RAC(11gR2) OCR BACKUP RESTORE
  6. 风讯dotNETCMS源码分析—数据存取篇
  7. 转: EclipseIDE开发 for C++
  8. 20140904 atoi字符串转化为整数源码
  9. 【LeetCode】深搜DFS(共85题)
  10. 雷林鹏分享:MySQL ALTER命令
  11. java maven
  12. 深入P2P——BT种子解析
  13. 嵌入式常用通讯协议2(CAN协议)
  14. VirtualBox上安装WindowsXP的完整教程
  15. 命令创建vue项目工程
  16. Android 自定义圆角TextView控件 带边框 非shape
  17. 写公众号一个月关注量破900,聊聊我的感受
  18. 人工智能:从图灵到未来
  19. can收发器 rx_CAN/CANFD采样点
  20. [基础算法] 并查集

热门文章

  1. 【原】win 7 屏幕旋转问题的解决
  2. Oauth2认证图解
  3. freyja对分库分表设计绝对是最强大的
  4. 笔记本插入耳机声音外放问题解决方式—1
  5. 苹果手机怎么定位安卓手机_苹果AirPods搭配安卓手机怎么样?那是相当好
  6. 数据结构实验——就餐人数最多的时间段
  7. 案例分享 | 可编程机器人Scratch二次开发案例
  8. 小知识 定位测绘领域中全站仪/接收机RTK精度1cm+1ppm的含义
  9. java如何高效查询重复数据_java – jpa条件查询获取列表中的重复值
  10. CentOS6.7 i686上安装JDK7