本文主要是介绍IK和粒子的Simulation Space导致的位置错误问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LateUpdate调用的IK和粒子的Simulation Space导致的位置错误问题
游戏开发中遇到玩家的手枪瞄准右上方,开枪后枪口的火焰粒子会出现在正中间,刚好是没开启IK瞄准的位置,将粒子的SimulationSpace改为Local后问题解决,但是某些烟雾是需要World的.
原因是因为枪口的IK骨胳控制在LateUpdate里,所以粒子渲染后,所以用下面的脚本来强行让粒子位移.
using UnityEngine;
using System.Collections;public class ParticleLateUpdate : MonoBehaviour {public Transform target; // The Transform parented to one of the character's bonesprivate Vector3 targetPosition;private Quaternion targetRotation;void Start(){LateUpdate();}// Move this ParticleSystem to the target's last frame position before it emitsvoid Update(){transform.position = targetPosition;//transform.rotation = targetRotation;}// Read the world space position and rotation of the target after procedural effects have been applied// NB! Make sure this script is set to a higher value than FinalIK components in the Script Execution Order!void LateUpdate(){targetPosition = target.position;//targetRotation = target.rotation;}
}
粒子不能放在枪口的挂点的相对位置,要挂在不受到IK影响的位置,仍到Root里也是可以的.
这篇关于IK和粒子的Simulation Space导致的位置错误问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!