在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实现神笔马良效果相关推荐

  1. unity 条目换位效果_Unity AI主题博客条目

    unity 条目换位效果 Welcome to the first of Unity's new AI-themed blog entries! We have set up this space a ...

  2. Unity 实现贴花效果的制作教程

    c#教程​https://www.cnblogs.com/Yesi/p/15829200.html ​ 有些游戏中的战斗痕迹的效果会通过贴花来实现的,贴花的方式多种多样.而在Unity中,有一种给官方 ...

  3. unity气流模拟效果

    机房气流模拟效果 参考 效果展示: 资源链接:unity气流模拟效果-Unity3D文档类资源-CSDN下载

  4. 用Unity实现景深效果

    用Unity实现景深效果 景深也是一种非常常见的后处理手段,它用来模拟相机拍摄画面的效果.今天我们讨论如何在Unity中实现它. 简单来说,景深效果可以拆分为两个部分,一个部分是聚焦,使画面中指定的区 ...

  5. Unity 翻书效果

    Unity翻书效果 目前做的VR项目中需要一个翻阅魔法书的效果,考虑过使用UnityBookPageCurl-master插件,但是那个插件是纯UI显示的,只有二维效果,在VR里观感不佳,之后在网上找 ...

  6. Unity时光倒流效果实现

    Unity时光倒流效果实现<25/11/2017> 场景:一个Panel,一个由众多小Cube堆叠而成的巨大Cube,巨大Cube中心放置爆炸点Bomb. 实现方式:一共就三个脚本,每个C ...

  7. Unity UV 水效果实现

    Unity UV 水效果实现 Unity Water Shader 组件搭载 基本参数调节 所需图片 效果呈现 Unity Water Shader Shader "Custom/SeaWa ...

  8. [Unity Shader]凌波微步效果

    [Unity Shader]凌波微步效果 相信很多人都看过天龙八部,里面的段誉有一个技能就是凌波微步:移动的时候人先到,衣角跟随其后.说白了就是移动时有一个残影跟着他.下面先看下最终效果 下面我们看如 ...

  9. unity 打字机变色效果

    unity 打字机变色效果 实现效果 工程文件下载 实现难点 打印文字的最后一个字的颜色是与前面文字的颜色不同的,而且打印后逐渐变为前面字的颜色. 实现思路 考虑到unity的text组件的颜色是整体 ...

最新文章

  1. 分析B站10万条弹幕后,发现了歪嘴战神的终极奥义!
  2. Linux下Mysql的查询用法
  3. Swift - 移除页面视图上的所有元素
  4. VC中实现弹出CEdit的气泡提示框
  5. shell 函数的高级用法
  6. Java——demo之仿ATM操作
  7. 有了二叉查找树、平衡树为啥还需要红黑树?
  8. python应用实例论文_浅谈Python在科学计算中的应用
  9. Hibernate之DetachedCriteria类详解
  10. hbase 伪分布安装 java_HBase伪分布搭建
  11. html span设置外边距,行内元素内外边距探究:为何span设置上下margin和padding不起效...
  12. Python 入门演示
  13. JSON中JObject和JArray,JValue序列化(Linq)
  14. 《全局光照技术》在摩点网发起众筹活动
  15. java mina框架_Mina框架在项目中的使用(一)
  16. SWFUpload文件上传
  17. 03一般过去时和主谓双宾
  18. 题解 CF32C 【Flea】
  19. C#之四十九 游戏编程周每日总结
  20. 输入一个自然数N,要求输出如下的魔方阵,即边长为N*N,元素取值为1至N*N,1在左上角,呈顺时针方向依次放置各元素。

热门文章

  1. git status 显示中文和解决中文乱码
  2. 想了解API接口,这一篇就够了
  3. 一种基于“spark lite”和“按键自动精灵”软件的不间断跑流量方法
  4. 江湖救急1—win10系统读不出u盘
  5. 美国杜克大学计算机学院,杜克大学计算机专业留学的生活经历故事
  6. 树莓派蓝牙连接手机显示没有服务器,求助树莓派蓝牙连接问题
  7. 赠书 | 《大型网站运维:从系统管理到SRE》
  8. ERP业务逻辑-进销存
  9. MIPI D-PHYv2.5笔记(1) -- DPHY概览
  10. 如果网络工程师的能力有等级,你会是哪一级?