Unity:2D SpriteShape

1.1 简介

Sprite Shape 可以很灵活的更改sprite的轮廓。比如:

它由两部分组成:Sprite Shape Profile、Sprite Shape Controller,需要导入2D Sprite Shape Package.

1.1.1 Sprite导入要求

  • Texture Type - ‘Sprite (2D and UI)’.
  • Sprite Mode - 如果Texture只包含一个sprite,就设置为 ‘Single’ 
  • Mesh Type - 必须是Full Rect.
  • 如果Sprite的在图集里面,需要把图集的Allow RotationTight Packing取消勾选

1.1.2 创建流程

  • GameObject > 2D Object > Sprite Shape,创建一个Sprite Shape,有两个选项:Open/Close,创建的是不闭合或者是闭合的Sprite Shape
  • 它会自动挂载Sprite Shape Controller组件
  • 挂载EdgeCollider或者PolygonCollider开启碰撞

也可以:

  1. Assets > Create > 2D > Sprite Shape Profile创建一个资源文件
  2. 创建Angle Ranges并声明使用的 Sprites
  3. 赋值给Sprite Shape Controller组件

沿着Spline放置对象:

  1. 选择一个sprite添加 Sprite Shape Object Placement组件
  2. 赋值SpriteShapeController
  3. 调节 ratio,start, end points 沿着spline放置sprite.
  4. 勾选Set Normal让sprite沿着法线的方向旋转
  5. SpriteShape Object Placement:
    1. Start Point 必须要小于 End Point, and must be a valid index in the Spline's control points.
    2. 开启Set Normal rotates the Object at normal direction to where the Object is placed along the Spline.
    3. Ratio dictates the distance ratio between the Start and End points where the Object should be placed.
  • Attaching a Collider component

2.1 Sprite Shape Profile

更精确的控制spline上的sprite

PropertyFunction
Control Points-
Use Sprite Borders控制点沿着boder生成,在spite editor中更改Sprite Borders。
Fill-
Texture如果是闭合的shape,设置中间填充的texture,如果不是闭合的,没有影响
Offset中间填充的texture,往里/往外的偏移

Angle Range tool

Angle Ranges (tool)
创建Angle Ranges,并声明每一个angle range中使用的sprite
Start (degrees)开始的角度
End (degrees)结束的角度
Order在sprite有重叠时的优先级. 越小越先渲染
Sprites对于选中的angle range,能使用的sprite
Corners-
(All Corner options)每个拐角处的sprite

2.1.1 Open Shape

 

2.1.2 Closed Shape

中间可以填充,filling下设置的texture

2.1.3 Creating Angle Ranges

angle range 可以创建多个,即:0-360°可以划分成多个angle range。

上面是创建angle range的方法,拖动滑动条,浏览不同angle range的sprite list

 

2.2 Sprite Shape Controller

用来控制,sprite shape的outline,把profile拖到场景中时,它会自动挂载上去

PropertyFunction
Profile使用的Sprite Shape Profile
Edit Spline

Spline-
Detail设置生成的轮廓的网格质量,质量越高,面越多
Open Ended设置shape 闭合/开启
Adaptive UV默认打开,当sprite发生扭曲时,比如转弯,也会渲染sprite,只不过sprite会扭曲,比如缩小,关闭该属性时,如果两个controll point之间的距离<sprite width,就不会渲染
Enable Tangents当需要切线计算时,打开,比如使用2D Universal Render Pipeline.
Corner Threshold设置拐角的阈值,如果在这个值以内,就渲染角度的sprite,默认30°
Fill-
Fill Tessellation (C# Job)Generate fill geometry in C# Job.
Stretch UV开启后,Unity stretch the UV 来填充中间区域
Custom Geometry Creator通过定义Scriptable Object,来自定义填充的图形
Custom Geometry Modifier通过定义Scriptable Objects,来修改生成的图形.

Pixels Per Unit

( Stretch UV 关了才生效)

填充的单位密度,相当于tile的数量,值越大,要求的原始texture就越小

 

Height增加controll point处Sprites的高度,[0.1,4]
Corner设置controll point处,是否渲染corner sprite,默认Automatic
  Disabled不渲染
 Automatic如果它两个邻居都是Linear Point Mode,才渲染
  Stretched拉伸corner sprite
Sprite Variant设置controll point的sprite
  • Additional Collider settings
    • 只能挂载上edge collider或者polygon collider
Collider-
Update Collider开启后,如果sprite shape有改变,collider也会随之改变
Offsetcollider相对于shape的偏移,[-0.5,0.5]
Detail设置collider的边数的细节

2.2.1 Fill Tessellation (C# Job)

不管Open还是Close Shape都是由edge和fill texture组成,这俩都是在c#的job中生成的,避免影响主线程,如果关闭了该选项,就会在主线程中生成。

它的开启有两个条件:

  1. Sprite Shape 不能有重叠的点,或者特别相近的点
  2. Sprite Shape的边不能和其它的边重叠

如果有这两种情况,就不用勾选该选项,使用c#在主线程中生成fill区域,对于动态生成的,尽量开启该选项。

  • 推荐使用c# LibTess.NET生成的场景:
    • 勾选Sprite Shape Controller的Cache Geometry属性,它会在editor下生成并缓存下来,在运行时加载

2.2.2 Generating Custom Geometry

Generating Custom Geometry | 2D SpriteShape | 10.0.3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/516974.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

替代 Redis 和 Memcached:25 倍吞吐量! | 开源日报 No.213

dragonflydb/dragonfly Stars: 22.4k License: NOASSERTION Dragonfly 是一个内存数据存储&#xff0c;适用于现代应用工作负载&#xff0c;可替代 Redis 和 Memcached。与传统的内存数据存储相比&#xff0c;Dragonfly 提供了 25 倍的吞吐量、更高的缓存命中率和更低尾部延…

ChatGPT/GPT4科研应用与绘图技术及论文写作

2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

我与C++的爱恋:类与对象(一)

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;我与C的爱恋 ​C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&…

【贪玩巴斯】Mac的M芯片(M1/2...)下载homebrew方法(24年最新且已验证可行)

1. 按照目前广为流传的方法&#xff08;M1会出现一些问题&#xff09;&#xff1a; 终端输入&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 使用国内镜像下载。 2. 输入后按照要求步骤执行即可&#xff…

使用c语言libexpat开源库解析XML数据

1 libexpat简介 Expat 是一个用 C 语言编写的开源 XML 解析库&#xff0c;以其高性能和小巧的体积著称。Expat 兼容多种操作系统平台&#xff0c;包括但不限于 Windows、Linux、macOS 等。由于其跨平台特性和简单易用的API&#xff0c;Expat 成为了许多C/C程序员解析XML文档的…

原型模式详解

原型模式简单的理解来说,就是复制品,用一个已经做好的成品作为原型,然后通过复制它得到新的产品。就好像细胞分裂一样。用Java来说,就是用对象创建对象,而不是通过类来创建对象。 原型模式的目的是从原型实例克隆出新的实例 ,对于那些有非常复杂的初始化过程的对象或者是…

第三方短信-短信合作-106短信

第三方短信-短信合作-106短信 1、你是否也有需要发送短信的业务、但是自己没有短信服务的情况 2、是否需要大量发送短信、但是又不想通过自己的真实手机号发 3、您是否是开发者、但是没有自己的短信服务&#xff0c;需要发送短信可以使用/借用我的短信服务进行发送&#xff0c…

Docker 哲学 - docker swarm

Docker Swarm 模式下的集群管理和服务恢复机制 Docker Swarm 是 Docker 的集群管理和编排功能。在 Swarm 模式下&#xff0c;你可以将多个 Docker 主机组合成一个虚拟主机&#xff0c;称为 Swarm 集群。Swarm 集群由一个或多个管理节点&#xff08;manager nodes&#xff09;和…

Flutter-发布插件到pub上传不上问题

问题1&#xff1a; 尝试指令&#xff1a; flutter packages pub publish --serverhttps://pub.dartlang.org问题2&#xff1a; 问题1解决后&#xff0c;进入验证身份&#xff0c;点击终端显示的链接&#xff0c;跳转到google验证&#xff0c;记得这里要科*学上网&#xff0c;点…

理解pytorch的广播语义

目录 什么是广播运算 广播的条件 示例 示例1 示例2 示例3 补1 示例4 原位运算 示例5 参与广播运算的两个tensor&#xff0c;必须是从右向左对齐 总结规律 两个tensor可以做广播运算的条件&#xff1a; 两个可以互相广播的tensor运算的步骤&#xff1a; 例子&#x…

pycharm pyspark连接虚拟机的hive表 读取数据

方法&#xff1a; hive配置hiveserver2和metastore url <!-- 指定hiveserver2连接的host --> <property><name>hive.server2.thrift.bind.host</name><value>hadoop111</value> </property><!-- 指定hiveserver2连接的端口号 -…

接口的总结与面试题

接口本身不能创建对象&#xff0c;只能创建接口的实现类对象&#xff0c;接口类型的变量可以与实现类对象构成多态引用。 声明接口用interface&#xff0c;接口的成员声明有限制&#xff1a; &#xff08;1&#xff09;公共的静态常量 &#xff08;2&#xff09;公共的抽象方…

车载电子电器架构 —— 车辆数据配置开发

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

基于k8s的高性能综合web服务器搭建

目录 基于k8s的高性能综合web服务器搭建 项目描述&#xff1a; 项目规划图&#xff1a; 项目环境&#xff1a; k8s&#xff0c; docker centos7.9 nginx prometheus grafana flask ansible Jenkins等 1.规划设计整个集群的架构&#xff0c;k8s单master的集群环境&…

matlab的歧视:simulink不能使用stm32f4系列的ADC?

2023b的matlab&#xff0c;stm32f407芯片&#xff0c;运行内容Using the Analog to Digital Converter Block to Support STMicroelectronics STM32 Processor Based Boards Using the Analog to Digital Converter Block to Support STMicroelectronics STM32 Processor Base…

深入浅出 -- 系统架构之单体到分布式架构的演变

一、传统模式的技术改革 在很多年以前&#xff0c;其实没有严格意义上的前后端工程师之分&#xff0c;每个后端就是前端&#xff0c;同理&#xff0c;前端也可以是后端&#xff0c;即Ajax、jQuery技术未盛行前的年代。 起初&#xff0c;大部分前端界面很简单&#xff0c;显示的…

Linux云计算之网络基础9——园区网络架构项目

要求构建大型园区网络架构&#xff0c;方案如下&#xff1a; 园区A 园区c 公司B 要求&#xff1a; 1、A公司园区网络 一台汇聚层三层交换机&#xff0c;两台接入层二层交换机。 出口有一台路由器。 2、A园区有五台服务器。 分别为两台 WEB 服务器&#xff0c;…

VB 通过COM接口解析PSD文件

最近有PS测评的需求&#xff0c;故而想到了解析psd文件&#xff0c;目的就是为了获取文档信息和图层信息&#xff1b;获取PS的图像信息有很多方式&#xff0c;有过程性的&#xff0c;比如监听PS的各种操作事件&#xff1b;有结果性的&#xff0c;比如本文写的解析PSD文件。 0.…

【Apache Doris】周FAQ集锦:第 2 期

【Apache Doris】周FAQ集锦&#xff1a;第 2 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…

ChatGPT 4.0报错 :“Hmm…something seems to have gone wrong.”

ChatGPT报错&#xff0c;GPT-3.5模型正常&#xff0c;GPT-4.0报错&#xff1a;“Hmm…something seems to have gone wrong.” 说明&#xff1a;嗯…好像出了什么问题。 原因&#xff1a; 部分用户在使用GPT-3.5模型时提问正常&#xff0c;GPT-4.0模型提问时&#xff0c;出现这…