如何在放大一个节点的同时减少位置的偏移?

唉……这个问题名字真的不好取,总之详细情况还请各位听我细细道来……

我目前在维护一款MMORPG,然后策划给了个类似war3里山丘之王大招“天神下凡”的需求,想要在使用时使角色模型放大。
游戏角色有一个根节点(简称rn),rn的锚点在左下角,因此人物所有的移动,施法,动作的x,y值都是以rn的左下角为基准给的。
我现在的做法是给rn设置了一个scale,然后模型、动作、特效等子节点也会跟着放大,看效果其实还凑合,但是角色会有一个向右上角的偏移,emmm……如图所示

由于rn的锚点在左下角,x,y以左下角为基准,放大后锚点位置不变,人物的中轴(黄线)向右偏移了一段距离。但是实际上”天神下凡“的效果想要的黄线的x值是不变的。

那么问题来了,这破代码维护了20年了,各种地方的x,y值都是以左下角为基准给的,我应该怎么做才能以最小的代价实现这个需求?我想到最简单的办法就是判断在开技能的时候在所有设置x值的地方减一个偏移值……但是我可能会加班致死,所有各位大大有没有什么办法?救救孩子吧!!!!

更改锚点时缩放的问题,可以参考这个,做个类似的转换就好了

感谢,我下周上班的时候试一下!

缩放前改变锚点位置(不知道改变锚点会不会改变角色位置,如果会可以在计算下位置和原来一样),缩放后再把锚点设置回左下角。:joy: 单纯的想,不对请别见怪。。

so easy,再弄个子节点,子节点的锚点放在中间就好了,这样,如果要移动角色,就移动父节点;要缩放节点,就缩放子节点。

1赞

老哥,你这想法挺有意思的!请问这个新的子节点和以前的父节点之间的层级结构是怎么样的?我其实还是不大理解你说的这个思路具体怎么做……

zhaozhantao 他说的对

……难不成是我太菜了,根本不知道他说的怎么做

给你举个列子,你现在根节点为 1,1下面所有称为2,在1和2中间加个3,把2放在3下面,就是132,那么在你缩放的时候,缩放3就行。其他不变

在告诉你一个好消息,马上要下班了

一个人物是一个节点树,a是大节点,b是a的子节点,a节点只调位置用,b节点只调旋转用。