【Unity2D】实现打怪掉落物品(如爆金币等)的功能
本文章记录实现打怪掉落物品的功能,以下代码为2D实现,3D模式稍加修改即可。
目录
一、代码部分
二、注意事项
三、效果展示
一、代码部分
创建一个C#脚本命名为Item,并将该脚本挂载到需要掉落的物品上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;[RequireComponent(typeof(Rigidbody2D))]
[RequireComponent(typeof(BoxCollider2D))]
public class Item : MonoBehaviour
{// Start is called before the first frame updatevoid Awake(){// 反弹材质var physicMat = new PhysicsMaterial2D();physicMat.bounciness = 0.25f;_rb = GetComponent<Rigidbody2D>();_rb.velocity = new Vector2(Random.Range(-1f, 1f), 2f);_rb.freezeRotation = true;_rb.sharedMaterial = physicMat;gameObject.layer = LayerMask.NameToLayer("Item");}private void Start(){if(_owner == null){_owner = GameObject.FindWithTag("Player").transform;}}// Update is called once per framevoid Update(){if(!_bMagnet && Vector2.Distance((Vector2)transform.position, (Vector2)_owner.position) <= _fRange){_bMagnet = true;}if(_bMagnet){Vector3 dir = Vector3.MoveTowards(transform.position, _owner.position, _fMagnetSpeed * Time.deltaTime);_rb.MovePosition(dir);if(Vector2.Distance((Vector2)transform.position, (Vector2)_owner.position) <= 0.1f){Picked();}}}void Picked(){// 添加捡到物品的逻辑Destroy(gameObject);}private void OnDrawGizmos(){if (_bShowRangeInScene){Gizmos.color = new Color(1, 1, 0, 0.3f);Gizmos.DrawCube(transform.position, new Vector2(_fRange * 2, _fRange * 2));}}public float _fRange = 1; // 自动吸物品范围public float _fMagnetSpeed = 10; // 吸取速度public Transform _owner; // 捡到物品的人[SerializeField]bool _bShowRangeInScene = false; // 是否在场景中显示范围Rigidbody2D _rb; // Vector2 _originSpeed; // 物品发射速度bool _bMagnet = false; // 是否被吸住
}
二、注意事项
1.需要禁用掉落物品与自身和其他人物之间的碰撞(否则可能被物品撞飞)。
三、效果展示
unity内运行产生了卡顿,实际运行不会卡。
【Unity2D】实现打怪掉落物品(如爆金币等)的功能相关推荐
- 谷歌滤镜软件叫什么_谷歌app爆红的拍照功能:你最像名画中的谁?
原标题:谷歌app爆红的拍照功能:你最像名画中的谁? 谷歌一个名叫艺术文化的app是世界上最大的线上博物馆.虽然这个app2016年就已经有了,不过直到最近才爆红,原因是开发人员在其中添加了一个有趣的 ...
- 如何快速找到微博热卖博主跟爆款商品?这个功能就可以!
近年来,随着微博,公众号等社交媒体平台用户数量的增多,社交媒体在品牌营销中占据了重要位置,目前,它已经成为广告主投广营销的重点领域. 微博作为国内最活跃的社交媒体之一,拥有着庞大的用户基础.丰富的营销 ...
- 009 自动打怪功能的设计和实现
文章目录 界面代码 流程设计 取最近怪物 自动打怪 界面代码 首先新增一个复选框,绑定控件变量和按钮事件,然后在按钮事件添加如下代码 //自动打怪 void MainWnd::OnBnClickedC ...
- 分享个堡垒前线辅助脚本,能快速升级刷金币的工具
分享个堡垒前线辅助脚本,能快速升级刷金币的工具 在这个游戏中每一局比赛结束后都有奖励,在这个游戏中部分饰品.动作表情就可以用金币来解锁,而且这个游戏还要众多模式,因此玩家可以用红手指云手机中的堡垒前线 ...
- 爆料:谷歌金山词霸功能介绍及预览图
5月8日上线的谷歌新产品,叫"金山词霸"还是"谷歌词霸"?正确答案是"谷歌金山词霸",这款新产品是在原金山词霸的基础上进行了一些互联网方面的 ...
- 零基础,初学者之 ---伤害门,激光门的制作;玩家获得道具,获得吸金币功能
一.伤害门,激光门,任何物体经过两个物体之间都会毁灭消失 主要由三个脚本: 1.产生创建脚本CreateCubes脚本,绘制射线检测的Door脚本和CubeMove移动脚本,CubeMove不 ...
- DGP链游公会丨一文概览什么是GameFi链游
2020年年初以来,全球疫情已经造成了广泛的经济问题,整个2020年除中国外,全球几乎所有的主要经济体全部为负增长.疫情时代下,"保持社交距离"."减少公共场所聚集与活动 ...
- 植物大战僵尸:寻找阳光掉落Call
本次实验将接触到Call调用这个概念,什么是Call调用? Call相当于你在编程时所编写的函数,而高级语言中的函数最终也是会被编译器转换为汇编格式的Call调用,这些关键Call普遍都会存在各种参数 ...
- 神途boss_神途boss刷新
道士还有一个独具特色的法术,叫做施毒术.在传奇中,当玩家达到14级的时候就可以修炼这种法术了.道士玩家平时可以通过打怪来获取到制作毒粉的材料(材料每次需求量并不是很多,材料种类是三种),每份毒粉制作成 ...
最新文章
- 【c语言】蓝桥杯算法提高 Quadratic Equation
- java发送http请求的四种方式
- 腾讯运维技术专家集结,揭秘高效智能运维 | 沙龙报名中
- Eclipse中查看Android源代码
- java取消按钮_Java Swing-单击取消按钮时不循环
- iframe父子页面间的关系
- SpringBoot集成MyBatis-Plus分页插件
- 【Flink】Flink流式导入Hbase 【视频笔记】
- vscode 翻译_前端新手 VSCode 入门指南
- Ubuntu无法ping通外网可以ping通内网
- python计算召回率代码_序列标注的准确率和召回率计算
- 会话技术——Cookie和Session
- pdf合并、生成目录大纲
- 大学生程序设计邀请赛(华东师范大学)A
- python常用library
- python爬取实习僧招聘信息字体反爬
- 从翻唱到原创,抖音千万粉丝网红郭聪明是如何养成的?
- js获取用户选择的文件路径[曲线救国]
- 写给那些冷门专业的大学生,敢问出路在何方?
- Clickhouse特性
热门文章
- 有哪些免费在线压缩图片的方法或工具
- 九齐单片机 , 使用了未定义的符号“STK03”(13010) ,取正 / 符号出错
- 新世纪计算机专业英语,新世纪研究生公共英语教材阅读A课文翻译完整版.pdf
- 【Vue+Element UI】关闭指定某一个页面的loading动画
- 文本文件自动计算生成srt字幕格式的文件
- Excel工作表中定位最后单元格(END属性)
- Android 系统 '七夕'巨献 VIVO Xplay 基于ViVo官方稳定内核,完美root,适度美化,降噪点,完美支持官方OTA升级
- Python实现软件自动登录超时锁屏
- 设计模式之单例设计模式(Singleton Pattern)详细剖析
- Java Web权限管理设计及实现