Added Radoll script with example
This commit is contained in:
parent
4effa7adb1
commit
fce5869bf8
8
Assets/Models.meta
Normal file
8
Assets/Models.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b937b76b52cd57d4fafeed740013ea0a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
73
Assets/Prefabs/Argon.controller
Normal file
73
Assets/Prefabs/Argon.controller
Normal file
@ -0,0 +1,73 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!91 &9100000
|
||||
AnimatorController:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Argon
|
||||
serializedVersion: 5
|
||||
m_AnimatorParameters: []
|
||||
m_AnimatorLayers:
|
||||
- serializedVersion: 5
|
||||
m_Name: Base Layer
|
||||
m_StateMachine: {fileID: 7214284557114207221}
|
||||
m_Mask: {fileID: 0}
|
||||
m_Motions: []
|
||||
m_Behaviours: []
|
||||
m_BlendingMode: 0
|
||||
m_SyncedLayerIndex: -1
|
||||
m_DefaultWeight: 0
|
||||
m_IKPass: 0
|
||||
m_SyncedLayerAffectsTiming: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
--- !u!1102 &7110728152036530755
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Armature|t_pose
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -435624762207290869, guid: a43af84b3da50a24f8c21454b4ec319f,
|
||||
type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1107 &7214284557114207221
|
||||
AnimatorStateMachine:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Base Layer
|
||||
m_ChildStates:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 7110728152036530755}
|
||||
m_Position: {x: 270, y: 110, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_EntryTransitions: []
|
||||
m_StateMachineTransitions: {}
|
||||
m_StateMachineBehaviours: []
|
||||
m_AnyStatePosition: {x: 50, y: 20, z: 0}
|
||||
m_EntryPosition: {x: 50, y: 120, z: 0}
|
||||
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||
m_DefaultState: {fileID: 7110728152036530755}
|
||||
8
Assets/Prefabs/Argon.controller.meta
Normal file
8
Assets/Prefabs/Argon.controller.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8782bbceccadcdf4ba6d6f8fb6990b1d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 9100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Prefabs/Argon.fbx
Normal file
BIN
Assets/Prefabs/Argon.fbx
Normal file
Binary file not shown.
1607
Assets/Prefabs/Argon.fbx.meta
Normal file
1607
Assets/Prefabs/Argon.fbx.meta
Normal file
File diff suppressed because it is too large
Load Diff
1366
Assets/Scenes/Ragdoll.unity
Normal file
1366
Assets/Scenes/Ragdoll.unity
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Scenes/Ragdoll.unity.meta
Normal file
7
Assets/Scenes/Ragdoll.unity.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 30fcca8dbdd3d5c4e89b9cdd2dce4b40
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
100
Assets/Scripts/Ragdoll.cs
Normal file
100
Assets/Scripts/Ragdoll.cs
Normal file
@ -0,0 +1,100 @@
|
||||
using UnityEngine;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine.Rendering;
|
||||
using System.ComponentModel;
|
||||
|
||||
/**
|
||||
* Code Inspired by these tutorial
|
||||
* Source: https://www.youtube.com/watch?v=KuMe6Iz8pFI, https://www.youtube.com/watch?v=B_NnQQKiw6I
|
||||
* Consulted on : 24/10/2022
|
||||
*/
|
||||
public class Ragdoll : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private bool _startsRagdolled;
|
||||
private List<Rigidbody> _ragdollRigidbodies;
|
||||
private Animator _animator;
|
||||
private Transform _hipBone;
|
||||
|
||||
private bool _isRagdoll
|
||||
{
|
||||
get { return _ragdollRigidbodies != null && !_ragdollRigidbodies.Select(x => x.isKinematic).FirstOrDefault(); }
|
||||
}
|
||||
|
||||
// Start is called before the first frame update
|
||||
private void Start()
|
||||
{
|
||||
}
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_ragdollRigidbodies = GetComponentsInChildren<Rigidbody>().ToList();
|
||||
_animator = GetComponent<Animator>();
|
||||
_hipBone = _animator.GetBoneTransform(HumanBodyBones.Hips);
|
||||
|
||||
void setRagdollState()
|
||||
{
|
||||
if (_startsRagdolled)
|
||||
{
|
||||
EnableRagdoll();
|
||||
}
|
||||
else
|
||||
{
|
||||
DisableRagdoll();
|
||||
}
|
||||
}
|
||||
|
||||
setRagdollState();
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Update is called once per frame
|
||||
private void Update()
|
||||
{
|
||||
if(Input.GetKeyDown(KeyCode.Space))
|
||||
{
|
||||
if (_isRagdoll)
|
||||
{
|
||||
DisableRagdoll();
|
||||
}
|
||||
else
|
||||
{
|
||||
EnableRagdoll();
|
||||
}
|
||||
}
|
||||
}
|
||||
private void EnableRagdoll()
|
||||
{
|
||||
_ragdollRigidbodies.ForEach(rigidbody => rigidbody.isKinematic = false);
|
||||
_animator.enabled = false;
|
||||
}
|
||||
private void DisableRagdoll()
|
||||
{
|
||||
_ragdollRigidbodies.ForEach(rigidbody => rigidbody.isKinematic = true);
|
||||
_animator.enabled = true;
|
||||
StandBackUp();
|
||||
}
|
||||
|
||||
private void StandBackUp()
|
||||
{
|
||||
Vector3 originalHipsPosition = _hipBone.position;
|
||||
transform.position = originalHipsPosition;
|
||||
|
||||
void setRightHeight()
|
||||
{
|
||||
if (Physics.Raycast(transform.position, Vector3.down, out RaycastHit hitInfo))
|
||||
{
|
||||
transform.position = new Vector3(transform.position.x, hitInfo.point.y, transform.position.z);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
setRightHeight();
|
||||
|
||||
_hipBone.position = originalHipsPosition;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
11
Assets/Scripts/Ragdoll.cs.meta
Normal file
11
Assets/Scripts/Ragdoll.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 54b4af10a3fe94f46bb698f348872322
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Loading…
x
Reference in New Issue
Block a user