private void AddAttachObject(Collider collider) { GameObject parent = m_ColliderInfo.GetCollider(); if (parent == null) { return; } AttachConfig attach_config = m_ColliderInfo.GetAttachConfig(); AttachTargetInfo attach_info = new AttachTargetInfo(); attach_info.ParentObj = parent; attach_info.TargetObj = collider.gameObject; attach_info.AttachNode = TriggerUtil.GetChildNodeByName(collider.gameObject, attach_config.AttachNodeName); UnityEngine.Vector3 hit_pos = parent.GetComponent <Collider>().ClosestPointOnBounds(attach_info.AttachNode.position); attach_info.ParentPos = attach_info.ParentObj.transform.InverseTransformPoint(hit_pos); attach_info.Rotate = attach_config.AttachRotation; attach_info.MoveControler = attach_info.TargetObj.GetComponent <CharacterController>(); m_AttachedObjects.Add(attach_info); UpdateAttachTargetPos(attach_info); LogicSystem.NotifyGfxMoveControlStart(attach_info.TargetObj, m_OwnSkill.SkillId, true); //Debug.Log("---AttachImpact: send " + attach_config.AttachImpact + " to " + attach_info.TargetObj.name); m_DamageManager.SendImpactToObject(m_DamageManager.GetOwner(), collider.gameObject, attach_config.AttachImpact, attach_config.AttachImpactTime, m_OwnSkill.SkillId, m_CurHitCountId); }
private void SendFinalImpact() { AttachConfig attach_config = m_ColliderInfo.GetAttachConfig(); UpdateHitCount(); for (int i = m_AttachedObjects.Count - 1; i >= 0; --i) { AttachTargetInfo ati = m_AttachedObjects[i]; if (ati.ParentObj != null) { //Debug.Log("---FinalImpact: send " + attach_config.FinalImpact + " to " + ati.TargetObj.name); m_DamageManager.SendImpactToObject(m_DamageManager.GetOwner(), ati.TargetObj, attach_config.FinalImpact, attach_config.FinalImpactTime, m_OwnSkill.SkillId, m_CurHitCountId); } } }
private void UpdateAttachObjects() { AttachConfig attach_config = m_ColliderInfo.GetAttachConfig(); for (int i = m_AttachedObjects.Count - 1; i >= 0; --i) { AttachTargetInfo ati = m_AttachedObjects[i]; if (ati.ParentObj != null) { if (!UpdateAttachTargetPos(ati)) { m_AttachedObjects.RemoveAt(i); //Debug.Log("---FallImpact: send to " + ati.TargetObj.name); m_DamageManager.SendImpactToObject(m_DamageManager.GetOwner(), ati.TargetObj, attach_config.FallImpact, attach_config.FallImpactTime, m_OwnSkill.SkillId, m_CurHitCountId); } } } }