game(interaction/drawer): UNCORRUPTED?
FINALLY?
This commit is contained in:
parent
bb2c744344
commit
362094b914
7 changed files with 5249 additions and 39 deletions
File diff suppressed because one or more lines are too long
|
@ -1 +1,7 @@
|
|||
Г4Ж2Ѓ7ЙЖ0:Ћ2ЙЙД77<19>ГК42<19><1A>Б<EFBFBD>3Г<1A>А1<D090>3<1C>213<31>ВБВ<>1(Й2Г0БЄ6И79К29<10>2<К29З0Ж'1ЕВ1К9<1D>Н><10>КЙ29Ђ0К0<10>АЙЙ2:Ё:72Ж2ЇАЖ2<10>АЙЙ2:Ё:72Ж2Ћ0ЙД07:
|
||||
fileFormatVersion: 2
|
||||
guid: 2052c55ff54ac834f86e6bf8ec94d3c2
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1 +1,7 @@
|
|||
Г4Ж2Ѓ7ЙЖ0:Ћ2ЙЙД77<19>ГК422В<18>ГВГ1<1A>В<>А0Б<>2121(Й2Г0БЄ6И79К29<10>2<К29З0Ж'1ЕВ1К9<1D>Н><10>КЙ29Ђ0К0<10>АЙЙ2:Ё:72Ж2ЇАЖ2<10>АЙЙ2:Ё:72Ж2Ћ0ЙД07:
|
||||
fileFormatVersion: 2
|
||||
guid: d6d1294f3d7f3b4438d5aa264b3eb4db
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &2785014689676826087
|
||||
--- !u!1 &2241004988363710587
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
|
@ -8,54 +8,66 @@ GameObject:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7548123659046493114}
|
||||
- component: {fileID: 9107066153244540908}
|
||||
- component: {fileID: 2929167475790662953}
|
||||
- component: {fileID: 3082934515490353905}
|
||||
- component: {fileID: 1033763107808798454}
|
||||
- component: {fileID: 9062581398314777105}
|
||||
- component: {fileID: 6622534912770032937}
|
||||
- component: {fileID: 185535121731533047}
|
||||
- component: {fileID: 4570066915066746684}
|
||||
m_Layer: 10
|
||||
m_Name: Drawer Interactable (Dynamic Component)
|
||||
m_Name: Handle Surface
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &7548123659046493114
|
||||
--- !u!4 &9062581398314777105
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2785014689676826087}
|
||||
m_GameObject: {fileID: 2241004988363710587}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
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_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_Father: {fileID: 7548123659046493114}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &9107066153244540908
|
||||
--- !u!54 &6622534912770032937
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2241004988363710587}
|
||||
serializedVersion: 4
|
||||
m_Mass: 1
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0.05
|
||||
m_CenterOfMass: {x: 0, y: 0, z: 0}
|
||||
m_InertiaTensor: {x: 1, y: 1, z: 1}
|
||||
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ImplicitCom: 1
|
||||
m_ImplicitTensor: 1
|
||||
m_UseGravity: 1
|
||||
m_IsKinematic: 0
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
||||
--- !u!114 &185535121731533047
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2785014689676826087}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: da315c3f1e28be241badd4ee9c4b6e76, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
movementAxis: 1
|
||||
maxMovementDistance: 0.5
|
||||
--- !u!114 &2929167475790662953
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2785014689676826087}
|
||||
m_GameObject: {fileID: 2241004988363710587}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 0ad34abafad169848a38072baa96cdb2, type: 3}
|
||||
|
@ -171,6 +183,70 @@ MonoBehaviour:
|
|||
m_StartingMultipleGrabTransformers: []
|
||||
m_AddDefaultGrabTransformers: 1
|
||||
m_FarAttachMode: 0
|
||||
--- !u!138 &4570066915066746684
|
||||
FixedJoint:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2241004988363710587}
|
||||
m_ConnectedBody: {fileID: 3082934515490353905}
|
||||
m_ConnectedArticulationBody: {fileID: 0}
|
||||
m_BreakForce: Infinity
|
||||
m_BreakTorque: Infinity
|
||||
m_EnableCollision: 0
|
||||
m_EnablePreprocessing: 1
|
||||
m_MassScale: 1
|
||||
m_ConnectedMassScale: 1
|
||||
--- !u!1 &2785014689676826087
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7548123659046493114}
|
||||
- component: {fileID: 9107066153244540908}
|
||||
- component: {fileID: 3082934515490353905}
|
||||
- component: {fileID: 1033763107808798454}
|
||||
m_Layer: 10
|
||||
m_Name: Drawer Interactable (Dynamic Component)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &7548123659046493114
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2785014689676826087}
|
||||
serializedVersion: 2
|
||||
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_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 9062581398314777105}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &9107066153244540908
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2785014689676826087}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: da315c3f1e28be241badd4ee9c4b6e76, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
movementAxis: 1
|
||||
maxMovementDistance: 0.5
|
||||
--- !u!54 &3082934515490353905
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,27 +1,56 @@
|
|||
using System;
|
||||
using UnityEngine;
|
||||
º¹4·3<EFBFBD>*·4º¼"·³4·2,)—$7º2¹°1º´77ª·7¶µ4:—$7º2¹°1º01¶²¹<C2B2>……-©²¸º4¹²¡·6¸7·27:º<¸²73,©#¹0±$7º2¹°1º01¶²””®…-©²¸º4¹²¡·6¸7·27:º<¸²73”¡77³´³:¹01¶2¥·47º””®
|
||||
using UnityEngine.XR.Interaction.Toolkit.Interactables;
|
||||
|
||||
[RequireComponent(typeof(XRGrabInteractable))]
|
||||
[RequireComponent(typeof(ConfigurableJoint))]
|
||||
public class DrawerDynamicJointConfiguration : MonoBehaviour
|
||||
{
|
||||
[Header("mark's all-in-one dynamic drawer component")]
|
||||
[Space(10)]
|
||||
[HelpBox("make sure every child inside both prefabs are under the" +
|
||||
"'Interactable Environment' layer.\n\n" +
|
||||
‘;´0º2»29·7·–9º07²092”0¶0(¹7¡º46²2¹<EFBFBD>71µ²1:<EFBFBD>³²·¶2:¹<<EFBFBD>:7²29:´2<EFBFBD>•‘47º2¹°1º01¶28¹2³01<EFBFBD>9´·:62´0»2<EFBFBD>0<EFBFBD>±77»2<<EFBFBD>¶²94<EFBFBD>±76¶4²29<EFBFBD>43:´2<EFBFBD>±7·¹7¶2·°³9<EFBFBD>0±·::<EFBFBD>4º.7.7<EFBFBD>•‘0·<<EFBFBD>¡:9»2<EFBFBD>$7º2¹°1º´77<EFBFBD>¡°9º2¹9”0¶0<EFBFBD>,)<EFBFBD>'¹´³47+©”<EFBFBD>“¡°¶2¹0<EFBFBD>'3³¹2º<EFBFBD><EFBFBD>¡77:¹76¶2¹<EFBFBD>•<EFBFBD>§²0¹£09<EFBFBD>$7º2¹°1º7¹<EFBFBD>“¡:9»2<EFBFBD>$7º2¹°1º´77<EFBFBD>¡°9º2¹“<EFBFBD>9´·:62±2´0»2:´2<EFBFBD>•‘“$7º2¹°1º01¶2<EFBFBD>"7»4¹7·¶27º¶°¼29<32>4·1¶:²22<32>47<34>4º¹©°¼±°9:<3A>¦°¹5– HelpBoxMessageType.Error)]
|
||||
"whatever non-standard (a la ProBuilder) object geometry under the " +
|
||||
"interactable prefab should have a convex mesh collider if the console nags about it!\n\n" +
|
||||
"any Curve Interaction Casters (a la 'XR Origin (VR)' > 'Camera Offset' > '... Controller' " +
|
||||
"> 'Near-Far Interactor' > 'Curve Interaction Caster') should be have the " +
|
||||
"'Interactable Environment' layer included in its' Raycast Mask.",
|
||||
HelpBoxMessageType.Error)]
|
||||
[Space(10)]
|
||||
[SerializeField]
|
||||
private MovementAxis movementAxis = MovementAxis.Z;
|
||||
|
||||
——ž¹º¶¶0¹<Ÿ<EFBFBD>——:´2<EFBFBD>¶0¼´¶º6²´9º0·±2:´22¹°»29<EFBFBD>±07±2¸:6¶22<EFBFBD>·:º<EFBFBD>——ž—¹º¶¶0¹<Ÿ<EFBFBD>-ª·76º48:´2<EFBFBD>¶0¼´¶º6²´9º0·±2:´22¹°»29<EFBFBD>±07±2¸:6¶22<EFBFBD>·::‘”.<EFBFBD>©2¹´0¶4½2£´26²®8¹4»0º23¶·0:<EFBFBD>¶0¼¦7»²¶27:¢´9º0·±2<EFBFBD>—³<EFBFBD>…<EFBFBD>——ž¹º¶¶0¹<Ÿ<EFBFBD>——:´2»2¶·±4º<<EFBFBD>¹±0¶2<EFBFBD>73:´22¹°»29´·;³°9:<EFBFBD>4:<EFBFBD>±07<EFBFBD>¶7»²<EFBFBD>——ž—¹º¶¶0¹<Ÿ<EFBFBD>-ª·76º48:´2»2¶·±4º<<EFBFBD>¹±0¶2<EFBFBD>73:´22¹°»29´·;³°9:<EFBFBD>4:<EFBFBD>±07<EFBFBD>¶7»2‘”.<EFBFBD>©2¹´0¶4½2£´26²®8¹4»0º23¶·0:»2¶·±4º¼©±0¶2<EFBFBD>—³<EFBFBD>
|
||||
/// <summary>
|
||||
/// the maximum distance the drawer can be pulled out
|
||||
/// </summary>
|
||||
[Tooltip("the maximum distance the drawer can be pulled out")] [SerializeField]
|
||||
private float maxMovementDistance = 0.5f;
|
||||
|
||||
/// <summary>
|
||||
/// the velocity scale of the drawer, how fast it can move
|
||||
/// </summary>
|
||||
[Tooltip("the velocity scale of the drawer, how fast it can move")] [SerializeField]
|
||||
private float velocityScale = 0.5f;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
// ±77³´³:¹2:´2 configurable joint component
|
||||
// configure the configurable joint component
|
||||
var cJoint = GetComponent<ConfigurableJoint>();
|
||||
if (cJoint == null)
|
||||
throw new Exception("Drawer (Dynamic): ConfigurableJoint component not found ”:7¹²°1´01¶²Ÿ");
|
||||
throw new Exception("Drawer (Dynamic): ConfigurableJoint component not found (unreachable?)");
|
||||
|
||||
<EFBFBD>—¶·±5<EFBFBD>066<EFBFBD>¶7º´7·9¶4·²09<EFBFBD>072<EFBFBD>0·³:¶0¹<EFBFBD>2¼±28:³79:´2²²¹4¹22¶4·²0¹<EFBFBD>0¼´¹¢2±º3¦·3"¹°»29¢<·°¶´±¶·±µ4·3<C2B7>¶7»²¶27:º7<C2BA>0¼´9<C2B4>½¶7»²¶27º ¼´¹>‘”<E28098><10>1¥·47:¼¦7º´77<37><1E>¶7»²¶27º ¼´9<C2B4>ž<1E>¦7»²¶27º ¼´9¬<10><1F>¡77³´³:¹01¶2¥·47º¦7º´77¦´¶4º2²<1D>¡77³´³:¹01¶2¥·47º¦7º´77¦·±µ2²<32><10>1¥·47:—¼¦7º´77<37><1E>¶7»²¶27º ¼´9<C2B4>ž<1E>¦7»²¶27º ¼´9—¬<10><1F>¡77³´³:¹01¶2¥·47º¦7º´77¦´¶4º2²<1D>¡77³´³:¹01¶2¥·47º¦7º´77¦·±µ2²<32><10>1¥·47:½¦7º´77<37><1E>¶7»²¶27º ¼´9<C2B4>ž<1E>¦7»²¶27º ¼´9<10><1F>¡77³´³:¹01¶2¥·47º¦7º´77¦´¶4º2²<1D>¡77³´³:¹01¶2¥·47º¦7º´77¦·±µ2²<32> cJoint.angularXMotion = ConfigurableJointMotion.Locked;
|
||||
// lock all motions (linear and angular) except for the desired (linear) axis
|
||||
Debug.Log($"Drawer (Dynamic): locking movement to axis {movementAxis}");
|
||||
cJoint.xMotion = movementAxis == MovementAxis.X
|
||||
? ConfigurableJointMotion.Limited
|
||||
: ConfigurableJointMotion.Locked;
|
||||
cJoint.yMotion = movementAxis == MovementAxis.Y
|
||||
? ConfigurableJointMotion.Limited
|
||||
: ConfigurableJointMotion.Locked;
|
||||
cJoint.zMotion = movementAxis == MovementAxis.Z
|
||||
? ConfigurableJointMotion.Limited
|
||||
: ConfigurableJointMotion.Locked;
|
||||
cJoint.angularXMotion = ConfigurableJointMotion.Locked;
|
||||
cJoint.angularYMotion = ConfigurableJointMotion.Locked;
|
||||
cJoint.angularZMotion = ConfigurableJointMotion.Locked;
|
||||
|
||||
|
@ -32,7 +61,19 @@ public class DrawerDynamicJointConfiguration : MonoBehaviour
|
|||
bounciness = 0,
|
||||
contactDistance = 0
|
||||
};
|
||||
<EFBFBD><EFBFBD>—<EFBFBD>±77³´³:¹2:´2¹´³42±7²¼»0991<EFBFBD><EFBFBD>£2º¡·6¸7·27:©´³42±7²<””<EFBFBD>91—´¹¥4·²¶0º´1<EFBFBD>³0¶¹²<EFBFBD>91—º¹²#¹0»4º<<EFBFBD>³0¶¹²<EFBFBD>91—±76¶´¹´77¢2º²1º´7·¦7²2<EFBFBD><EFBFBD>¡76¶´¹´77¢2º²1º´7·¦7²2—¡77º4·º·º9¢<·°¶´±<EFBFBD>…<EFBFBD>—<EFBFBD>±77³´³:¹2:´2<EFBFBD>3¹01<EFBFBD>47º2¹°1º01¶²»09<EFBFBD>3¹0±$7º2¹°1º01¶2<EFBFBD><EFBFBD>£2º¡·6¸7·27:,©#¹0±$7º2¹°1º01¶2””<EFBFBD><EFBFBD>3¹0±$7º2¹°1º01¶2—¶7»²¶27:ª<¸2<EFBFBD>,)¡°¹²$7º2¹°1º01¶2—¦7»²¶27:ª<¸2«2¶·±4º<*¹°±µ4·³<EFBFBD><EFBFBD>3¹0±$7º2¹°1º01¶2:¹°±5¨·¹4º´77<EFBFBD>:¹º²<EFBFBD><EFBFBD>3¹0±$7º2¹°1º01¶2»2¶·±4º¼©±0¶2<EFBFBD>»2¶·±4º¼©±0¶²<EFBFBD>…
|
||||
|
||||
// configure the rigidbody
|
||||
var rb = GetComponent<Rigidbody>();
|
||||
rb.isKinematic = false;
|
||||
rb.useGravity = false;
|
||||
rb.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
|
||||
|
||||
// configure the grab interactable
|
||||
var grabInteractable = GetComponent<XRGrabInteractable>();
|
||||
grabInteractable.movementType = XRBaseInteractable.MovementType.VelocityTracking;
|
||||
grabInteractable.trackPosition = true;
|
||||
grabInteractable.velocityScale = velocityScale;
|
||||
|
||||
// guess the handle collider, lol
|
||||
Collider drawerDoorHandleCollider = GetComponentInChildren<BoxCollider>();
|
||||
if (drawerDoorHandleCollider == null)
|
||||
|
|
Loading…
Add table
Reference in a new issue