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 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里也是可以的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值