From fbe3b597739a2d85acb0692c402464521546b8b0 Mon Sep 17 00:00:00 2001 From: Brajanowski Date: Mon, 9 Jun 2025 18:50:01 +0200 Subject: [PATCH] unity dark mode asset, changes to player locomotion, camera bobbing --- Assets/Plugins/UnityEditorDarkMode.meta | 8 + Assets/Plugins/UnityEditorDarkMode/README.txt | 40 ++ .../UnityEditorDarkMode/README.txt.meta | 14 + .../UnityEditorDarkMode.dll | Bin 0 -> 79360 bytes .../UnityEditorDarkMode.dll.ini | 6 + .../UnityEditorDarkMode.dll.ini.meta | 14 + .../UnityEditorDarkMode.dll.meta | 70 +++ Assets/RebootKit | 2 +- Assets/jelycho/Code/Player/CameraSpring.cs | 1 - Assets/jelycho/Code/Player/FPPCamera.cs | 51 +- Assets/jelycho/Code/Player/PlayerActor.cs | 34 +- .../Code/Player/PlayerFPPLocomotion.cs | 105 ++++- Assets/jelycho/Code/Rope.cs | 2 +- .../Input/controls_jelycho.inputactions | 303 +++++++++++- .../Input/controls_jelycho.inputactions.meta | 2 +- .../jelycho/Materials/m_gut_segment_test.mat | 136 ++++++ .../Materials/m_gut_segment_test.mat.meta | 8 + Assets/jelycho/Prefabs/RopeSegment.prefab | 89 +++- Assets/jelycho/Worlds/dev/scn_map_dev.unity | 446 +++++++++++++++++- Assets/jelycho/actors/player/a_player.prefab | 42 +- .../actors/player/cc_fpp Noise Profile.asset | 40 ++ .../player/cc_fpp Noise Profile.asset.meta | 8 + 22 files changed, 1359 insertions(+), 62 deletions(-) create mode 100644 Assets/Plugins/UnityEditorDarkMode.meta create mode 100644 Assets/Plugins/UnityEditorDarkMode/README.txt create mode 100644 Assets/Plugins/UnityEditorDarkMode/README.txt.meta create mode 100644 Assets/Plugins/UnityEditorDarkMode/UnityEditorDarkMode.dll create mode 100644 Assets/Plugins/UnityEditorDarkMode/UnityEditorDarkMode.dll.ini create mode 100644 Assets/Plugins/UnityEditorDarkMode/UnityEditorDarkMode.dll.ini.meta create mode 100644 Assets/Plugins/UnityEditorDarkMode/UnityEditorDarkMode.dll.meta create mode 100644 Assets/jelycho/Materials/m_gut_segment_test.mat create mode 100644 Assets/jelycho/Materials/m_gut_segment_test.mat.meta create mode 100644 Assets/jelycho/actors/player/cc_fpp Noise Profile.asset create mode 100644 Assets/jelycho/actors/player/cc_fpp Noise Profile.asset.meta diff --git a/Assets/Plugins/UnityEditorDarkMode.meta b/Assets/Plugins/UnityEditorDarkMode.meta new file mode 100644 index 0000000..07a1fe8 --- /dev/null +++ b/Assets/Plugins/UnityEditorDarkMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3e722869deff58e4cae41190ceee880a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/UnityEditorDarkMode/README.txt b/Assets/Plugins/UnityEditorDarkMode/README.txt new file mode 100644 index 0000000..11e3627 --- /dev/null +++ b/Assets/Plugins/UnityEditorDarkMode/README.txt @@ -0,0 +1,40 @@ +DarkMode Mod for Unity Editor on Windows +---------------------------------------------------------------------------- +v1.1 04/08/2024 +---------------------------------------------------------------------------- + +A fully working runtime dark mode mod for Unity Editor on Windows with: + + - Dark title bar + - Dark menu bar + - Dark context menu + - And more... + +> This runtime mod works on Windows 11 and Windows 10 1903+. + Tested on Unity 2019, 2020, 2021, 2022, 2023 and Unity 6. + +Source code is available at: https://github.com/0x7c13/UnityEditor-DarkMode + +---------------------------------------------------------------------------- + +MIT License + +Copyright (c) 2024 Jiaqi (0x7c13) Liu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/Assets/Plugins/UnityEditorDarkMode/README.txt.meta b/Assets/Plugins/UnityEditorDarkMode/README.txt.meta new file mode 100644 index 0000000..f6ed178 --- /dev/null +++ b/Assets/Plugins/UnityEditorDarkMode/README.txt.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 33d8f76296a183145ae27b820db1e4b4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 281842 + packageName: DarkMode for Unity Editor on Windows + packageVersion: 1.1 + assetPath: Assets/Plugins/UnityEditorDarkMode/README.txt + uploadId: 656109 diff --git a/Assets/Plugins/UnityEditorDarkMode/UnityEditorDarkMode.dll b/Assets/Plugins/UnityEditorDarkMode/UnityEditorDarkMode.dll new file mode 100644 index 0000000000000000000000000000000000000000..4a7f1e300f1f472ecf42dc71c9dad001bbd48417 GIT binary patch literal 79360 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 m_Locomotion.runSpeed * m_EnableCameraBobbingPercentThreshold) { + if (m_Locomotion.IsSprinting) { + m_TargetCameraBobbing = m_SprintCameraBobbing; + } else { + m_TargetCameraBobbing = m_RunCameraBobbing; + } + } else { + m_TargetCameraBobbing = m_IdleCameraBobbing; + } + + m_CurrentCameraBobbing = Mathf.MoveTowards(m_CurrentCameraBobbing, + m_TargetCameraBobbing, + m_CameraBobbingTransitionSpeed * Time.deltaTime); + m_Camera.SetBobbing(m_CurrentCameraBobbing); + + m_PhysicsDragger.TargetWorldPosition = m_Camera.Camera.transform.position + + m_Camera.Camera.transform.forward * 2.0f; if (m_PhysicsDragger.Current.OrNull() is not null) { m_LineRenderer.enabled = true; diff --git a/Assets/jelycho/Code/Player/PlayerFPPLocomotion.cs b/Assets/jelycho/Code/Player/PlayerFPPLocomotion.cs index 2f0670f..f625ca8 100755 --- a/Assets/jelycho/Code/Player/PlayerFPPLocomotion.cs +++ b/Assets/jelycho/Code/Player/PlayerFPPLocomotion.cs @@ -1,6 +1,8 @@ using System; using System.Runtime.CompilerServices; using KinematicCharacterController; +using RebootKit.Engine.Extensions; +using RebootKit.Engine.Foundation; using Unity.Mathematics; using UnityEngine; using Logger = RebootKit.Engine.Foundation.Logger; @@ -8,17 +10,18 @@ using Logger = RebootKit.Engine.Foundation.Logger; namespace RealityReboot.jelycho.Player { public class PlayerFPPLocomotion : MonoBehaviour, ICharacterController { static readonly Logger s_logger = new(nameof(PlayerFPPLocomotion)); + + [ConfigVar("fpp.show_debug", 1)] + static ConfigVar s_showDebug; [SerializeField] KinematicCharacterMotor m_Motor; public float runSpeed = 10.0f; public float sprintSpeed = 20.0f; - public float groundAcceleration = 10.0f; + public float acceleration = 8.0f; public float groundFriction = 10.0f; - public float airFriction = 1.0f; - public float jumpHeight = 2.0f; public float jumpInputDuration = 0.2f; public float coyoteDuration = 0.2f; @@ -29,14 +32,31 @@ namespace RealityReboot.jelycho.Player { public float YawRotation { get; set; } Vector3 m_WishDir; - bool m_IsSprinting; + + public bool IsSprinting { + [MethodImpl(MethodImplOptions.AggressiveInlining)] get; + [MethodImpl(MethodImplOptions.AggressiveInlining)] private set; + } + bool m_IsJumpRequested; float m_JumpRequestedTime; float m_LastGroundedTime; Vector3 m_LastVelocity; - public bool IsGrounded => m_Motor.GroundingStatus.IsStableOnGround; + public bool IsGrounded { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { + return m_Motor.GroundingStatus.IsStableOnGround; + } + } + + public float SpeedXZ { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { + return m_Motor.Velocity.With(y: 0.0f).magnitude; + } + } void Awake() { m_Motor.CharacterController = this; @@ -47,20 +67,36 @@ namespace RealityReboot.jelycho.Player { Gizmos.DrawLine(transform.position, transform.position + m_WishDir * 2.0f); } + + static GUIStyle s_debugLabelStyle; void OnGUI() { + if (s_showDebug.IndexValue == 0) { + return; + } + + if (s_debugLabelStyle == null) { + s_debugLabelStyle = new GUIStyle(GUI.skin.label) { + fontSize = 20, + normal = { textColor = Color.white }, + alignment = TextAnchor.LowerLeft + }; + } + GUI.Label(new Rect(0, 0, Screen.width, Screen.height), $"Wish Direction: {m_WishDir}\n" + $"Is Grounded: {m_Motor.GroundingStatus.IsStableOnGround}\n" + $"Is Jump Requested: {m_IsJumpRequested}\n" + $"Motor Velocity: {m_Motor.Velocity}, magnitude: {m_Motor.Velocity.magnitude}\n" + $"Motor Base Velocity: {m_Motor.BaseVelocity}, magnitude: {m_Motor.BaseVelocity.magnitude}\n" + - $"Last Velocity: {m_LastVelocity}, magnitude: {math.length(m_LastVelocity)}\n"); + $"Last Velocity: {m_LastVelocity}, magnitude: {math.length(m_LastVelocity)}\n" + + $"XZ Last Velocity: {m_LastVelocity.With(y: 0.0f).magnitude}", + s_debugLabelStyle); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void SetWishDirection(Vector3 dir) { - m_WishDir = dir; + m_WishDir = dir.normalized; } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -71,7 +107,7 @@ namespace RealityReboot.jelycho.Player { [MethodImpl(MethodImplOptions.AggressiveInlining)] public void SetSprint(bool isSprinting) { - m_IsSprinting = isSprinting; + IsSprinting = isSprinting; } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -88,38 +124,65 @@ namespace RealityReboot.jelycho.Player { float control, float deltaTime) { float currentSpeed = Vector3.Dot(currentVelocity, m_WishDir); - + float addSpeed = wishSpeed - currentSpeed; if (addSpeed <= 0.0f) { return; } - float accelSpeed = groundAcceleration * deltaTime * wishSpeed; + float accelSpeed = acceleration * deltaTime * wishSpeed; + if (accelSpeed > addSpeed) { + accelSpeed = addSpeed; + } + + currentVelocity += accelSpeed * control * m_WishDir; + } + + void AirAccelerate(ref Vector3 currentVelocity, + float deltaTime) { + float wishSpeed = currentVelocity.magnitude; + if (wishSpeed >= runSpeed) { + wishSpeed = runSpeed; + } + + float currentSpeed = Vector3.Dot(currentVelocity, m_WishDir); + float addSpeed = wishSpeed - currentSpeed; + if (addSpeed <= 0.0f) { + return; + } + + float accelSpeed = deltaTime * wishSpeed; if (accelSpeed > addSpeed) { accelSpeed = addSpeed; } - currentVelocity += accelSpeed * control * m_WishDir; + currentVelocity += accelSpeed * m_WishDir; } void ApplyFriction(ref Vector3 currentVelocity, float friction, float deltaTime) { - float speed = currentVelocity.magnitude; + float speed = currentVelocity.With(y: 0.0f).magnitude; if (speed <= 0.0f) { return; } - float drop = speed * friction * deltaTime; - if (drop < speed) { - currentVelocity *= (speed - drop) / speed; - } else { - currentVelocity = Vector3.zero; + float stopSpeed = 12.0f; + float control = speed < stopSpeed ? stopSpeed : speed; + float newSpeed = speed - friction * control * deltaTime; + + if (newSpeed <= 0.0f) { + newSpeed = 0.0f; } + newSpeed /= speed; + + currentVelocity.x *= newSpeed; + currentVelocity.z *= newSpeed; } void GroundMovement(ref Vector3 currentVelocity, float deltaTime) { - float wishSpeed = m_IsSprinting ? sprintSpeed : runSpeed; - Accelerate(ref currentVelocity, wishSpeed, 1.0f, deltaTime); + float wishSpeed = IsSprinting ? sprintSpeed : runSpeed; + ApplyFriction(ref currentVelocity, groundFriction, deltaTime); + Accelerate(ref currentVelocity, wishSpeed, 1.0f, deltaTime); } void ApplyGravity(ref Vector3 currentVelocity, float deltaTime) { @@ -149,9 +212,7 @@ namespace RealityReboot.jelycho.Player { if (m_Motor.GroundingStatus.IsStableOnGround) { GroundMovement(ref currentVelocity, deltaTime); } else { - Accelerate(ref currentVelocity, runSpeed, airControl, deltaTime); - ApplyFriction(ref currentVelocity, airFriction, deltaTime); - + AirAccelerate(ref currentVelocity, deltaTime); ApplyGravity(ref currentVelocity, deltaTime); } diff --git a/Assets/jelycho/Code/Rope.cs b/Assets/jelycho/Code/Rope.cs index 2f08fd7..697ea35 100755 --- a/Assets/jelycho/Code/Rope.cs +++ b/Assets/jelycho/Code/Rope.cs @@ -18,7 +18,7 @@ namespace RealityReboot.jelycho { void Start() { Clear(); - for (int i = 0; i < 2; i++) { + for (int i = 0; i < 4; i++) { AddSegment(); } } diff --git a/Assets/jelycho/Input/controls_jelycho.inputactions b/Assets/jelycho/Input/controls_jelycho.inputactions index 1f3aaee..71438a7 100644 --- a/Assets/jelycho/Input/controls_jelycho.inputactions +++ b/Assets/jelycho/Input/controls_jelycho.inputactions @@ -1,5 +1,306 @@ { "name": "controls_jelycho", - "maps": [], + "maps": [ + { + "name": "FPP", + "id": "b0bcb628-1df3-4a2c-b682-23bb146d08d6", + "actions": [ + { + "name": "Move", + "type": "Value", + "id": "3c626577-80b8-479c-9f89-3de5215ff88e", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Look", + "type": "Value", + "id": "248f8f05-7290-4f55-aee3-cc25577f9bf8", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Jump", + "type": "Button", + "id": "8de4d981-bcae-4100-af76-05d381d961a6", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Drag", + "type": "Button", + "id": "bf3d1155-8050-482a-ae55-fa8d47c95e94", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Primary", + "type": "Button", + "id": "b00af1dd-1084-4763-8751-fdde9810b2eb", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Secondary", + "type": "Button", + "id": "982c57c9-6862-436b-9e85-41fcbd047312", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Use", + "type": "Button", + "id": "3284ff03-949a-4f12-913b-1b74b99a599e", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Sprint", + "type": "Button", + "id": "df786de7-aff8-496e-9c10-9699e37e542e", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + } + ], + "bindings": [ + { + "name": "", + "id": "7856b569-f241-4d9d-86ef-3f2f43c93730", + "path": "/delta", + "interactions": "", + "processors": "", + "groups": "", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "d67d0677-bbce-4d3c-b135-27accc98bfb1", + "path": "/rightStick", + "interactions": "", + "processors": "ScaleVector2(x=4)", + "groups": "", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "dd672a14-64ba-4cf6-a7b6-dbd4ac779d9f", + "path": "/space", + "interactions": "", + "processors": "", + "groups": "", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c7899bc3-40a6-4c5f-b4be-aa35b744a98b", + "path": "/buttonSouth", + "interactions": "", + "processors": "", + "groups": "", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "095c0e94-6900-442e-8bad-a61430bfead1", + "path": "/f", + "interactions": "", + "processors": "", + "groups": "", + "action": "Drag", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c22525c4-fa19-4f56-b9ae-63cd056dae70", + "path": "/rightStickPress", + "interactions": "", + "processors": "", + "groups": "", + "action": "Drag", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "d01e2a9b-4e4a-439f-892d-db8521ed0028", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": "", + "action": "Primary", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "28cdb072-0969-47ee-a2b5-c1e30b05cfc8", + "path": "/buttonWest", + "interactions": "", + "processors": "", + "groups": "", + "action": "Primary", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "0f8ae92e-c66e-4807-b95d-2fab59bd4e81", + "path": "/rightButton", + "interactions": "", + "processors": "", + "groups": "", + "action": "Secondary", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "46615209-739a-447c-9313-5befdf6b885e", + "path": "/buttonEast", + "interactions": "", + "processors": "", + "groups": "", + "action": "Secondary", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "WASD", + "id": "3151504d-248f-47a2-b1c6-c62f5582beea", + "path": "2DVector", + "interactions": "", + "processors": "", + "groups": "", + "action": "Move", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "7bb02b96-4858-48c7-b3f9-52975278ccfa", + "path": "/w", + "interactions": "", + "processors": "", + "groups": "", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "e2eda81d-db6a-4785-b6ea-adf41d23f1f4", + "path": "/s", + "interactions": "", + "processors": "", + "groups": "", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "784f8cb3-6b5c-4234-8fdd-d439d0a4353e", + "path": "/a", + "interactions": "", + "processors": "", + "groups": "", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "8c6bd391-705d-471d-a2d9-de82963f0c63", + "path": "/d", + "interactions": "", + "processors": "", + "groups": "", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "e3c4c724-efa2-49c3-8ee9-32f68f7310f4", + "path": "/leftStick", + "interactions": "", + "processors": "", + "groups": "", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "358c81fe-cbfe-455a-8828-a6d166426430", + "path": "/e", + "interactions": "", + "processors": "", + "groups": "", + "action": "Use", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "037bde49-96a0-4b33-a67e-881fd33c6f38", + "path": "/buttonNorth", + "interactions": "", + "processors": "", + "groups": "", + "action": "Use", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8f8321d3-e7e9-4c01-9b59-d1d7ed8afb3b", + "path": "/leftShift", + "interactions": "", + "processors": "", + "groups": "", + "action": "Sprint", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c5f00aad-2919-4619-8a77-22625f9bf7cd", + "path": "/leftStickPress", + "interactions": "", + "processors": "", + "groups": "", + "action": "Sprint", + "isComposite": false, + "isPartOfComposite": false + } + ] + } + ], "controlSchemes": [] } \ No newline at end of file diff --git a/Assets/jelycho/Input/controls_jelycho.inputactions.meta b/Assets/jelycho/Input/controls_jelycho.inputactions.meta index 563e8e5..8839229 100644 --- a/Assets/jelycho/Input/controls_jelycho.inputactions.meta +++ b/Assets/jelycho/Input/controls_jelycho.inputactions.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: bf6c2a363dbaef244afe38b9ff9fecc5 +guid: f991e9abd9a53ee4b94b329a5ce96cb2 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/Assets/jelycho/Materials/m_gut_segment_test.mat b/Assets/jelycho/Materials/m_gut_segment_test.mat new file mode 100644 index 0000000..93055c4 --- /dev/null +++ b/Assets/jelycho/Materials/m_gut_segment_test.mat @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6013205232748957701 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: m_gut_segment_test + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 0.7830166, b: 0.5990566, a: 1} + - _Color: {r: 1, g: 0.7830166, b: 0.5990566, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/jelycho/Materials/m_gut_segment_test.mat.meta b/Assets/jelycho/Materials/m_gut_segment_test.mat.meta new file mode 100644 index 0000000..1947472 --- /dev/null +++ b/Assets/jelycho/Materials/m_gut_segment_test.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a77c9b1e1d7c3904a9e12b803d004477 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/jelycho/Prefabs/RopeSegment.prefab b/Assets/jelycho/Prefabs/RopeSegment.prefab index 119f600..530cbe5 100755 --- a/Assets/jelycho/Prefabs/RopeSegment.prefab +++ b/Assets/jelycho/Prefabs/RopeSegment.prefab @@ -31,7 +31,8 @@ Transform: m_LocalPosition: {x: 5, y: 4.5, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 5452900940449103625} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!54 &4464667053523743839 @@ -184,3 +185,89 @@ SphereCollider: serializedVersion: 3 m_Radius: 0.1 m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &1040602021727741658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5452900940449103625} + - component: {fileID: 3969270039518206556} + - component: {fileID: 924001250292102233} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5452900940449103625 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1040602021727741658} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8811143122788091904} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3969270039518206556 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1040602021727741658} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &924001250292102233 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1040602021727741658} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a77c9b1e1d7c3904a9e12b803d004477, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/jelycho/Worlds/dev/scn_map_dev.unity b/Assets/jelycho/Worlds/dev/scn_map_dev.unity index 82f9bff..425eb61 100644 --- a/Assets/jelycho/Worlds/dev/scn_map_dev.unity +++ b/Assets/jelycho/Worlds/dev/scn_map_dev.unity @@ -1113,6 +1113,114 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &641531628 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 641531629} + - component: {fileID: 641531632} + - component: {fileID: 641531631} + - component: {fileID: 641531630} + m_Layer: 0 + m_Name: Cube (12) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &641531629 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 641531628} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -33.6, y: 0.902, z: -22.32} + m_LocalScale: {x: 2, y: 1, z: 4} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1042858358} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &641531630 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 641531628} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &641531631 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 641531628} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a1e17f3aaa1b87645ace00876ad676c8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &641531632 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 641531628} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &729232292 GameObject: m_ObjectHideFlags: 0 @@ -1408,8 +1516,8 @@ Transform: m_GameObject: {fileID: 837027564} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -31, y: 4, z: -26.017} - m_LocalScale: {x: 2, y: 1, z: 4} + m_LocalPosition: {x: -31.47, y: 2.83, z: -26.017} + m_LocalScale: {x: 2, y: 0.63012, z: 4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1042858358} @@ -1739,6 +1847,10 @@ Transform: - {fileID: 953613262} - {fileID: 2142333104} - {fileID: 837027565} + - {fileID: 1972428159} + - {fileID: 1443285067} + - {fileID: 641531629} + - {fileID: 1706463577} - {fileID: 1545139735} - {fileID: 158723780} - {fileID: 1913099149} @@ -1919,6 +2031,114 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1443285066 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1443285067} + - component: {fileID: 1443285070} + - component: {fileID: 1443285069} + - component: {fileID: 1443285068} + m_Layer: 0 + m_Name: Cube (15) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1443285067 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1443285066} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -27.55, y: 4.1, z: -26.017} + m_LocalScale: {x: 2, y: 0.63012, z: 4} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1042858358} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1443285068 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1443285066} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1443285069 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1443285066} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a1e17f3aaa1b87645ace00876ad676c8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1443285070 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1443285066} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &1545139734 GameObject: m_ObjectHideFlags: 0 @@ -1947,7 +2167,7 @@ Transform: m_GameObject: {fileID: 1545139734} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -22, y: 6, z: -26.017} + m_LocalPosition: {x: -22, y: 3.24, z: -26.017} m_LocalScale: {x: 2, y: 1, z: 4} m_ConstrainProportionsScale: 0 m_Children: [] @@ -2135,6 +2355,114 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1601196691} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1706463576 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1706463577} + - component: {fileID: 1706463580} + - component: {fileID: 1706463579} + - component: {fileID: 1706463578} + m_Layer: 0 + m_Name: Cube (13) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1706463577 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706463576} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -35.667, y: 1.589, z: -22.32} + m_LocalScale: {x: 2, y: 0.49595, z: 4} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1042858358} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1706463578 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706463576} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1706463579 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706463576} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a1e17f3aaa1b87645ace00876ad676c8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1706463580 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706463576} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &1790104247 GameObject: m_ObjectHideFlags: 0 @@ -2299,6 +2627,114 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1913099148} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1972428158 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1972428159} + - component: {fileID: 1972428162} + - component: {fileID: 1972428161} + - component: {fileID: 1972428160} + m_Layer: 0 + m_Name: Cube (14) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1972428159 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1972428158} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -29.54, y: 3.48, z: -26.017} + m_LocalScale: {x: 2, y: 0.63012, z: 4} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1042858358} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1972428160 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1972428158} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1972428161 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1972428158} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a1e17f3aaa1b87645ace00876ad676c8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1972428162 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1972428158} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &2047055848 GameObject: m_ObjectHideFlags: 0 @@ -2326,7 +2762,7 @@ Transform: m_GameObject: {fileID: 2047055848} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 2.858, y: 4.047, z: 4.051} + m_LocalPosition: {x: 5.508, y: 5.954, z: 4.051} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -2359,7 +2795,7 @@ MonoBehaviour: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2047055848} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 231035b95a324754ade9f4d54d28240d, type: 3} m_Name: diff --git a/Assets/jelycho/actors/player/a_player.prefab b/Assets/jelycho/actors/player/a_player.prefab index 57ace8e..f6d4a28 100755 --- a/Assets/jelycho/actors/player/a_player.prefab +++ b/Assets/jelycho/actors/player/a_player.prefab @@ -189,7 +189,6 @@ MonoBehaviour: m_ForwardAngularDisplacement: 3 m_SidewaysAngularDisplacement: 2 m_HeightAngularDisplacement: 4 - m_LinearDisplacement: 0.1 --- !u!1 &6086846679135428685 GameObject: m_ObjectHideFlags: 0 @@ -270,14 +269,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b82691de261d95842bde9bca81db0893, type: 3} m_Name: m_EditorClassIdentifier: - _pickDistance: 5 - _pickLayer: - serializedVersion: 2 - m_Bits: 4294967295 k__BackingField: 0.5 - _pitchMin: -80 - _pitchMax: 80 + m_PitchMin: -80 + m_PitchMax: 80 k__BackingField: {fileID: 8557190970217331903} + m_BobbingFrequency: 1 + m_BobbingAmplitude: 1 + m_PickDistance: 5 + m_PickLayer: + serializedVersion: 2 + m_Bits: 0 --- !u!114 &2402344678768307677 MonoBehaviour: m_ObjectHideFlags: 0 @@ -334,11 +335,10 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Motor: {fileID: 7994225944200444124} - runSpeed: 10 - sprintSpeed: 20 - groundAcceleration: 8 - groundFriction: 9.91 - airFriction: 1.5 + runSpeed: 8 + sprintSpeed: 14 + acceleration: 20 + groundFriction: 10 jumpHeight: 2 jumpInputDuration: 0.2 coyoteDuration: 0.2 @@ -419,6 +419,7 @@ GameObject: m_Component: - component: {fileID: 3547307509376589031} - component: {fileID: 8557190970217331903} + - component: {fileID: 1387897054540036977} m_Layer: 0 m_Name: cc_fpp m_TagString: Untagged @@ -484,6 +485,23 @@ MonoBehaviour: BarrelClipping: 0.25 Anamorphism: 0 BlendHint: 0 +--- !u!114 &1387897054540036977 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7887986861182861129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68bb026fafb42b14791938953eaace77, type: 3} + m_Name: + m_EditorClassIdentifier: + NoiseProfile: {fileID: 11400000, guid: 8c717fcbc095df94da5c56dc723a9e04, type: 2} + PivotOffset: {x: 0, y: 0, z: 0} + AmplitudeGain: 1 + FrequencyGain: 1 + m_NoiseOffsets: {x: 0, y: 0, z: 0} --- !u!1001 &8469368785544680877 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/jelycho/actors/player/cc_fpp Noise Profile.asset b/Assets/jelycho/actors/player/cc_fpp Noise Profile.asset new file mode 100644 index 0000000..0e2e985 --- /dev/null +++ b/Assets/jelycho/actors/player/cc_fpp Noise Profile.asset @@ -0,0 +1,40 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b7f59e54f2bfd184b9dd451a678d089b, type: 3} + m_Name: cc_fpp Noise Profile + m_EditorClassIdentifier: + PositionNoise: + - X: + Frequency: 0.1 + Amplitude: 0.4 + Constant: 1 + Y: + Frequency: 1 + Amplitude: 0.2 + Constant: 1 + Z: + Frequency: 1 + Amplitude: 0 + Constant: 1 + OrientationNoise: + - X: + Frequency: 0 + Amplitude: 0 + Constant: 0 + Y: + Frequency: 0 + Amplitude: 0 + Constant: 0 + Z: + Frequency: 0.8 + Amplitude: 1.7 + Constant: 1 diff --git a/Assets/jelycho/actors/player/cc_fpp Noise Profile.asset.meta b/Assets/jelycho/actors/player/cc_fpp Noise Profile.asset.meta new file mode 100644 index 0000000..348698c --- /dev/null +++ b/Assets/jelycho/actors/player/cc_fpp Noise Profile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c717fcbc095df94da5c56dc723a9e04 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: