Create Health and Ragdoll component and and them to enemy

This commit is contained in:
2024-08-09 17:36:09 +02:00
parent 01c6f898f3
commit f3623c6036
6 changed files with 146 additions and 2 deletions

View File

@@ -9,6 +9,8 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 6058054806151542978} - component: {fileID: 6058054806151542978}
- component: {fileID: 2957099991542780378}
- component: {fileID: 5199431160857003883}
m_Layer: 0 m_Layer: 0
m_Name: Enemy m_Name: Enemy
m_TagString: Untagged m_TagString: Untagged
@@ -32,6 +34,47 @@ Transform:
- {fileID: 1700549123680942451} - {fileID: 1700549123680942451}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2957099991542780378
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4528139036750849664}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5272ea2f30f4ddb488b557c786c790fa, type: 3}
m_Name:
m_EditorClassIdentifier:
health: 100
isDead: 0
onDied:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 5199431160857003883}
m_TargetAssemblyTypeName: RagdollComponent, Assembly-CSharp
m_MethodName: Ragdoll
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &5199431160857003883
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4528139036750849664}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 90e2fe62ce2b65f4092a35e879751f60, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &1695861871456640983 --- !u!1001 &1695861871456640983
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -0,0 +1,54 @@
using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
public class HealthComponent : MonoBehaviour
{
[ReadOnly]
[SerializeField]
private int health;
[ReadOnly]
[SerializeField]
private bool isDead;
public UnityEvent onDied;
[Button]
public void Setup()
{
health = 100;
isDead = false;
}
public void TakeDamage(int damage)
{
health -= damage;
if (health < 0)
{
health = 0;
}
if (health == 0)
{
isDead = true;
onDied.Invoke();
}
}
[Button]
private void Take10Damage()
{
TakeDamage(10);
}
[Button]
private void Kill()
{
TakeDamage(health);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5272ea2f30f4ddb488b557c786c790fa
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,25 @@
using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RagdollComponent : MonoBehaviour
{
[Button]
public void Ragdoll()
{
var rigidBodies = GetComponentsInChildren<Rigidbody>();
foreach (var rb in rigidBodies)
{
rb.isKinematic = false;
}
var animators = GetComponentsInChildren<Animator>();
foreach (var a in animators)
{
a.enabled = false;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 90e2fe62ce2b65f4092a35e879751f60
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -14,13 +14,13 @@ public class OdinButtons : OdinEditorWindow
GetWindow<OdinButtons>().Show(); GetWindow<OdinButtons>().Show();
} }
[ButtonGroup] [Button]
private void ForgeScene() private void ForgeScene()
{ {
LoadScene("Assets/Scenes/Forge.unity"); LoadScene("Assets/Scenes/Forge.unity");
} }
[ButtonGroup] [Button]
private void HurricaneExample() private void HurricaneExample()
{ {
LoadScene("Assets/HurricaneVR/TechDemo/Scenes/scene_examples.unity"); LoadScene("Assets/HurricaneVR/TechDemo/Scenes/scene_examples.unity");