IK和粒子的Simulation Space导致的位置错误问题

来源:互联网 发布:淘宝网商城裙子 编辑:程序博客网 时间:2024/05/22 09:51

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 bones    private Vector3 targetPosition;    private Quaternion targetRotation;    void Start()    {        LateUpdate();    }    // Move this ParticleSystem to the target's last frame position before it emits    void 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里也是可以的.

0 0
原创粉丝点击