unity实现神笔马良效果
在unity中,用鼠标画出图案并设置碰撞和重量,蛮牛上看到的代码如下:
/// <summary>
/// 画线,脚本随便挂载,要求Camera的Projection设置为Orthographic
/// </summary>
public class DrawLine : MonoBehaviour
{/// <summary>/// 划线的宽度/// </summary>public float width = 0.1f;/// <summary>/// 划线的颜色/// </summary>public Color color = Color.grey;/// <summary>/// 画出来的图案/// </summary>private LineRenderer currentLR;/// <summary>/// 上一个位置点/// </summary>private Vector2 previousPoint;/// <summary>/// 当前位置点/// </summary>private Vector2 latestPoint;private void Update(){if(Input.GetMouseButtonDown(0)){//线条渲染currentLR = new GameObject("LineRenderer").AddComponent<LineRenderer>();currentLR.material = new Material(Shader.Find("Sprites/Default")) { color = color };currentLR.widthMultiplier = width;//不使用世界坐标currentLR.useWorldSpace = false;//设置初始位置个数为1currentLR.positionCount = 1;//设置第一个线段位置信息currentLR.SetPosition(0, (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition));//更新数据previousPoint = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);}else if(Input.GetMouseButton(0)){//如果当前位置不等于上一个位置,也就是按下鼠标后移动了,才会画线,但是要求Camera的Projection设置为Orthographicif(previousPoint != (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition)){//线条渲染,每帧加一段currentLR.positionCount++;//设置划线的位置信息currentLR.SetPosition(currentLR.positionCount - 1, (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition));//碰撞器BoxCollider2D collider = new GameObject("BoxCollider2D").AddComponent<BoxCollider2D>();collider.transform.parent = currentLR.transform;//最新的位置点latestPoint = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);//碰撞器的位置在两个位置的中间collider.transform.position = (previousPoint + latestPoint) * 0.5f;//根据两个位置点设置碰撞器的角度float angle = Mathf.Atan2((latestPoint - previousPoint).y, (latestPoint - previousPoint).x) * Mathf.Rad2Deg;collider.transform.eulerAngles = new Vector3(0, 0, angle);//碰撞器的长宽分别是两个位置的距离,和线的宽度collider.size = new Vector2(Vector2.Distance(latestPoint, previousPoint), width);//更新数据previousPoint = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);}}else if(Input.GetMouseButtonUp(0)){if(currentLR.transform.childCount > 0){//鼠标抬起后,如果划线成功,用useAutoMass设置重量currentLR.gameObject.AddComponent<Rigidbody2D>().useAutoMass = true;}}}
}
unity实现神笔马良效果相关推荐
- unity 条目换位效果_Unity AI主题博客条目
unity 条目换位效果 Welcome to the first of Unity's new AI-themed blog entries! We have set up this space a ...
- Unity 实现贴花效果的制作教程
c#教程https://www.cnblogs.com/Yesi/p/15829200.html 有些游戏中的战斗痕迹的效果会通过贴花来实现的,贴花的方式多种多样.而在Unity中,有一种给官方 ...
- unity气流模拟效果
机房气流模拟效果 参考 效果展示: 资源链接:unity气流模拟效果-Unity3D文档类资源-CSDN下载
- 用Unity实现景深效果
用Unity实现景深效果 景深也是一种非常常见的后处理手段,它用来模拟相机拍摄画面的效果.今天我们讨论如何在Unity中实现它. 简单来说,景深效果可以拆分为两个部分,一个部分是聚焦,使画面中指定的区 ...
- Unity 翻书效果
Unity翻书效果 目前做的VR项目中需要一个翻阅魔法书的效果,考虑过使用UnityBookPageCurl-master插件,但是那个插件是纯UI显示的,只有二维效果,在VR里观感不佳,之后在网上找 ...
- Unity时光倒流效果实现
Unity时光倒流效果实现<25/11/2017> 场景:一个Panel,一个由众多小Cube堆叠而成的巨大Cube,巨大Cube中心放置爆炸点Bomb. 实现方式:一共就三个脚本,每个C ...
- Unity UV 水效果实现
Unity UV 水效果实现 Unity Water Shader 组件搭载 基本参数调节 所需图片 效果呈现 Unity Water Shader Shader "Custom/SeaWa ...
- [Unity Shader]凌波微步效果
[Unity Shader]凌波微步效果 相信很多人都看过天龙八部,里面的段誉有一个技能就是凌波微步:移动的时候人先到,衣角跟随其后.说白了就是移动时有一个残影跟着他.下面先看下最终效果 下面我们看如 ...
- unity 打字机变色效果
unity 打字机变色效果 实现效果 工程文件下载 实现难点 打印文字的最后一个字的颜色是与前面文字的颜色不同的,而且打印后逐渐变为前面字的颜色. 实现思路 考虑到unity的text组件的颜色是整体 ...
最新文章
- 分析B站10万条弹幕后,发现了歪嘴战神的终极奥义!
- Linux下Mysql的查询用法
- Swift - 移除页面视图上的所有元素
- VC中实现弹出CEdit的气泡提示框
- shell 函数的高级用法
- Java——demo之仿ATM操作
- 有了二叉查找树、平衡树为啥还需要红黑树?
- python应用实例论文_浅谈Python在科学计算中的应用
- Hibernate之DetachedCriteria类详解
- hbase 伪分布安装 java_HBase伪分布搭建
- html span设置外边距,行内元素内外边距探究:为何span设置上下margin和padding不起效...
- Python 入门演示
- JSON中JObject和JArray,JValue序列化(Linq)
- 《全局光照技术》在摩点网发起众筹活动
- java mina框架_Mina框架在项目中的使用(一)
- SWFUpload文件上传
- 03一般过去时和主谓双宾
- 题解 CF32C 【Flea】
- C#之四十九 游戏编程周每日总结
- 输入一个自然数N,要求输出如下的魔方阵,即边长为N*N,元素取值为1至N*N,1在左上角,呈顺时针方向依次放置各元素。
热门文章
- git status 显示中文和解决中文乱码
- 想了解API接口,这一篇就够了
- 一种基于“spark lite”和“按键自动精灵”软件的不间断跑流量方法
- 江湖救急1—win10系统读不出u盘
- 美国杜克大学计算机学院,杜克大学计算机专业留学的生活经历故事
- 树莓派蓝牙连接手机显示没有服务器,求助树莓派蓝牙连接问题
- 赠书 | 《大型网站运维:从系统管理到SRE》
- ERP业务逻辑-进销存
- MIPI D-PHYv2.5笔记(1) -- DPHY概览
- 如果网络工程师的能力有等级,你会是哪一级?