mirror of
https://github.com/GTA-ASM/SanAndreasUnity
synced 2025-02-16 21:08:28 +00:00
use prefab to spawn dead body
This commit is contained in:
parent
75d9ca5f35
commit
8469f18862
6 changed files with 124 additions and 8 deletions
95
Assets/Prefabs/DeadBody.prefab
Normal file
95
Assets/Prefabs/DeadBody.prefab
Normal file
|
@ -0,0 +1,95 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &2141754834917738923
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4130636948537856663}
|
||||
- component: {fileID: 4038138864584441180}
|
||||
- component: {fileID: 3458215582039164093}
|
||||
- component: {fileID: 3928823046603185135}
|
||||
- component: {fileID: 7017421174877670493}
|
||||
m_Layer: 0
|
||||
m_Name: DeadBody
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4130636948537856663
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2141754834917738923}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &4038138864584441180
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2141754834917738923}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
serverOnly: 0
|
||||
localPlayerAuthority: 0
|
||||
m_AssetId:
|
||||
m_SceneId: 3719402579
|
||||
--- !u!114 &3458215582039164093
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2141754834917738923}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 52246fc08ef54f047800aa1a2be91fd2, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!114 &3928823046603185135
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2141754834917738923}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 62374ff6df2c74f9699075492ef7fdb9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_health: 0
|
||||
m_onDamage:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
|
||||
Culture=neutral, PublicKeyToken=null
|
||||
--- !u!114 &7017421174877670493
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2141754834917738923}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4dafeb77b323d57489cc5b15183dc41b, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
forceMultiplier: 1
|
7
Assets/Prefabs/DeadBody.prefab.meta
Normal file
7
Assets/Prefabs/DeadBody.prefab.meta
Normal file
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 14d22e60f4926f64cbd36f393fe11b9a
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -171,6 +171,8 @@ MonoBehaviour:
|
|||
AIOutOfRangeTimeout: 5
|
||||
AIOutOfRangeDistance: 250
|
||||
pedSyncRate: 20
|
||||
ragdollPrefab: {fileID: 2141754834917738923, guid: 14d22e60f4926f64cbd36f393fe11b9a,
|
||||
type: 3}
|
||||
ragdollMass: 100
|
||||
ragdollLifetime: 90
|
||||
ragdollDrag: 0.05
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System.Collections.Generic;
|
||||
using SanAndreasUnity.Utilities;
|
||||
using UnityEngine;
|
||||
|
||||
namespace SanAndreasUnity.Behaviours.Peds
|
||||
|
@ -9,6 +10,15 @@ namespace SanAndreasUnity.Behaviours.Peds
|
|||
public static IEnumerable<DeadBody> DeadBodies => _deadBodies;
|
||||
public static int NumDeadBodies => _deadBodies.Count;
|
||||
|
||||
public PushableByDamage PushableByDamage { get; private set; }
|
||||
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
this.PushableByDamage = this.GetComponentOrThrow<PushableByDamage>();
|
||||
this.PushableByDamage.forceMultiplier = PedManager.Instance.ragdollDamageForceWhenDetached;
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
_deadBodies.Add(this);
|
||||
|
|
|
@ -57,6 +57,7 @@ namespace SanAndreasUnity.Behaviours
|
|||
|
||||
[Header("Ragdoll")]
|
||||
|
||||
public GameObject ragdollPrefab;
|
||||
public float ragdollMass = 100f;
|
||||
public float ragdollLifetime = 30f;
|
||||
public float ragdollDrag = 0.05f;
|
||||
|
|
|
@ -383,7 +383,7 @@ namespace SanAndreasUnity.Behaviours
|
|||
|
||||
}
|
||||
|
||||
public Transform DetachRagdoll(DamageInfo damageInfo)
|
||||
public GameObject DetachRagdoll(DamageInfo damageInfo)
|
||||
{
|
||||
if (null == m_ragdollBuilder)
|
||||
return null;
|
||||
|
@ -406,7 +406,6 @@ namespace SanAndreasUnity.Behaviours
|
|||
m_ragdollBuilder = null;
|
||||
|
||||
ragdollTransform.SetParent(null);
|
||||
ragdollTransform.name = "dead body " + m_ped.name;
|
||||
|
||||
// setup rigid bodies
|
||||
foreach (var rb in ragdollTransform.GetComponentsInChildren<Rigidbody>())
|
||||
|
@ -436,14 +435,16 @@ namespace SanAndreasUnity.Behaviours
|
|||
// change layer
|
||||
ragdollTransform.gameObject.SetLayerRecursive(GameManager.DefaultLayerIndex);
|
||||
|
||||
Object.Destroy(ragdollTransform.gameObject, PedManager.Instance.ragdollLifetime * Random.Range(0.85f, 1.15f));
|
||||
GameObject ragdollGameObject = Object.Instantiate(PedManager.Instance.ragdollPrefab);
|
||||
Object.Destroy(ragdollGameObject, PedManager.Instance.ragdollLifetime * Random.Range(0.85f, 1.15f));
|
||||
ragdollGameObject.name = "dead body " + m_ped.name;
|
||||
ragdollTransform.SetParent(ragdollGameObject.transform);
|
||||
ragdollGameObject.GetComponentOrThrow<DeadBody>();
|
||||
|
||||
ragdollTransform.gameObject.AddComponent<DeadBody>();
|
||||
ragdollTransform.gameObject.AddComponent<Damageable>();
|
||||
var pushableByDamage = ragdollTransform.gameObject.AddComponent<PushableByDamage>();
|
||||
pushableByDamage.forceMultiplier = PedManager.Instance.ragdollDamageForceWhenDetached;
|
||||
if (Net.NetStatus.IsServer)
|
||||
Net.NetManager.Spawn(ragdollGameObject);
|
||||
|
||||
return ragdollTransform;
|
||||
return ragdollGameObject;
|
||||
}
|
||||
|
||||
public float GetAmountOfDamageForBone(Transform boneTransform, float baseDamageValue)
|
||||
|
|
Loading…
Add table
Reference in a new issue