unity 为啥要做动态骨骼的碰撞,有啥用吗?请问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity 为啥要做动态骨骼的碰撞,有啥用吗?请问相关的知识,希望对你有一定的参考价值。

参考技术A 首先为了降低计算消耗,大多数情况下不会用 MeshCollider,而是用多个标准几何体的组合来近似包裹住你的模型。
要做随蒙皮骨骼动画而运动的碰撞器其实很简单,你在 Unity 里把每个骨骼模型展开,给每个部分添加近似的标准几何体 Collider 包裹它就可以了(比如把两个圆柱 Collider 附加到腿上,把胶囊 Collider 附加到身子上等),最后把整个动画角色做成一个 Prefab,因为 Collider 是相对定位的,骨骼动画时,Collider 会跟随它管理的 Mesh 而动。

setNeedsDisplay:NO 有啥用吗?

【中文标题】setNeedsDisplay:NO 有啥用吗?【英文标题】:Does setNeedsDisplay:NO have any use at all?setNeedsDisplay:NO 有什么用吗? 【发布时间】:2012-09-25 14:48:32 【问题描述】:

在 Cocoa 中,当我们想要重绘视图时,我们会向视图发送setNeedsDisplay: 消息,告诉视图重绘自身,并带有 YES 参数。我想知道是否在任何情况下您想要发送视图setNeedsDisplay:NO,例如多线程环境,如果发送视图setNeedsDisplay:YES,那么在使用setNeedsDisplay:NO 之后立即再次设置会使视图重绘本身。如果没有理由调用setNeedsDisplay:NO,那么为什么要创建这样一个乏味的方法,他们可以在其中实现类似[view redrawView] 的东西

【问题讨论】:

【参考方案1】:

setNeedsDisplay:NO 可以用于如果您想丢弃以前调用的setNeedsDisplay:YES。例如。有时将所有子视图标记为需要显示,然后运行算法取消标记其中一些会更容易。

【讨论】:

【参考方案2】:

您可能知道,每次通过正常事件循环时,显示更新都是自动的(如果需要)。如果有必要,您可以调用setNeedsDisplay: 来强制在两者之间进行显示更新。

来自NSView的文档:

讨论 每当用于绘制视图对象的数据或状态发生变化时,应该向视图发送 setNeedsDisplay: 消息。标记为需要显示的 NSView 对象在每次通过应用程序的事件循环时自动重新显示。 (当然,在事件循环到来之前需要重新显示的视图对象可以立即被发送到适当的 display... 方法。)

该函数的布尔参数只是指定是否整个视图的边界 受到影响,而不是某些属性“needsDisplay”设置为真或假。因此,setNeedsDisplay: 确实很像“redrawView”,只是使用了附加参数。

编辑

以上内容的灵感来自相同的文档:

标志 如果是,则将接收者的整个边界标记为需要显示;如果否,则将其标记为不需要显示。

【讨论】:

这在很大程度上是不正确的。事件循环检查是否需要重绘视图,由调用setNeedsDisplay: 确定(它确实设置了一个标志:-[NSView needsDisplay])。该方法绝对不会导致立即重绘,也不一定在每次通过时都重绘每个视图。您提到的强制绘制行为由-[NSView display]-[NSView displayRect:] 提供。见developer.apple.com/library/mac/documentation/Cocoa/Conceptual/… 很公平。我编辑了我的答案并解释了信息的来源。 @Mundi 不幸的是,这并不能完全回答我的问题。请问setNeedsDisplay:NO有没有用处。

以上是关于unity 为啥要做动态骨骼的碰撞,有啥用吗?请问的主要内容,如果未能解决你的问题,请参考以下文章

这是Python语言,请问其中的第五行dc=……有啥用为啥用dc?

setNeedsDisplay:NO 有啥用吗?

Unity内置的Tag和Layer都有啥用

这种定义JS对象的方式有啥用吗?

带有数组的 unique_ptr 有啥用吗?

带有数组的 unique_ptr 有啥用吗?