c# - Unity2D:缩放游戏对象而不缩放其子对象
问题描述
我有一个有孩子的敌人;敌人也有死亡动画。在死亡动画中(使用动画师),我将敌人缩放到合适的大小。然而,敌人中的孩子们也被缩小了,即使我在孩子身上有一个动画,我也在这个孩子身上添加了锚点位置。有没有办法可以缩小敌人但也保持孩子的大小,ps孩子是一个UI文本对象。谢谢!
解决方案
也许(希望)有更好的解决方案,但是您可以在子对象上使用一个组件,该组件始终保持原始比例反转父比例的相对变化
public class FreezeScale : MonoBehaviour
{
private Vector3 originalScale;
private Vector3 parentOriginalScale;
private void Awake()
{
// afaik RectTransform inherits from Transform
// so this should also work for UI objects.
originalScale = transform.localScale;
parentOriginalScale = transform.parent.localScale;
}
private void LateUpdate()
{
var currentParentScale = Transform.parent.localScale;
// Get the relative difference to the original scale
var diffX = currentParentScale.x / parentOriginalScale.x;
var diffY = currentParentScale.y / parentOriginalScale.y;
var diffZ = currentParentScale.z / parentOriginalScale.z;
// This inverts the scale differences
var diffVector = new Vector3 (1/diffX, 1/diffY, 1/diffZ);
// Apply the inverted differences to the original scale
transform.localScale = originalScale * diffVector;
}
}
自从在我的手机上被黑后没有测试过,但我希望你明白;)
推荐阅读
- typescript - nestjs 集成测试“无法设置未定义的属性“userId””
- flutter - 我如何创建模型并将数组数据插入到 sqlite 颤振中
- php - Doctrine MySQL,如何使用 getRepository() 使 andWhere 成为可选
- python - .after() 函数不会让秒表等待
- javascript - × React: TypeError: Object(...) is not a function Stripe
- github - 我可以在个人 GitHub 存储库上禁用“添加文件”下拉菜单吗?
- sql - 循环使用不同参数的 SQL 代码 (Presto)
- python - 没有看到 PIL 模块
- redis - 在 StackExchange.Redis 中有一种有效的方法可以一次查询多个排序集
- azure-sql-database - 对具有相同架构的两个 SQL 表使用相同的模型类