diff --git a/Assets/Prefabs/Player/PlayerPrefab.prefab b/Assets/Prefabs/Player/PlayerPrefab.prefab index b040f6d..bb13800 100644 --- a/Assets/Prefabs/Player/PlayerPrefab.prefab +++ b/Assets/Prefabs/Player/PlayerPrefab.prefab @@ -42,8 +42,8 @@ Transform: m_LocalPosition: {x: 0, y: 3.15, z: -4} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 7535681351943922319} - {fileID: 9039284905748829538} + - {fileID: 7535681351943922319} m_Father: {fileID: 7188906082087890177} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -582,7 +582,7 @@ Transform: m_LocalScale: {x: 15, y: 15, z: 15} m_Children: [] m_Father: {fileID: 394725941300514827} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &2175243648869193250 MeshFilter: @@ -677,7 +677,7 @@ Transform: m_LocalScale: {x: 0.2, y: 0.2, z: 2} m_Children: [] m_Father: {fileID: 394725941300514827} - m_RootOrder: 1 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3642785993242854697 MeshFilter: diff --git a/Assets/Scenes/Demos/MovementScene.unity b/Assets/Scenes/Demos/MovementScene.unity index 58a08c1..7727866 100644 --- a/Assets/Scenes/Demos/MovementScene.unity +++ b/Assets/Scenes/Demos/MovementScene.unity @@ -1600,6 +1600,10 @@ PrefabInstance: propertyPath: m_Name value: DebugPlayerPrefab 1 objectReference: {fileID: 0} + - target: {fileID: 3039877022422189067, guid: 6adb8bcc65ee3a54da64d7c65225f219, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 6664667533527261801, guid: 6adb8bcc65ee3a54da64d7c65225f219, type: 3} propertyPath: hasGrapple value: 1 diff --git a/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dDash.cs b/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dDash.cs index ffcf6b2..a86762c 100644 --- a/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dDash.cs +++ b/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dDash.cs @@ -20,7 +20,7 @@ public class dDash : NetworkBehaviour{ dPlayerMovement pMove; void Start(){ - driver = GameObject.Find("Canvas").GetComponent(); + //driver = GameObject.Find("Canvas").GetComponent(); characterController = this.gameObject.GetComponent(); pMove = GetComponent(); } diff --git a/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dGrapplingHook.cs b/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dGrapplingHook.cs index 1398013..46eef12 100644 --- a/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dGrapplingHook.cs +++ b/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dGrapplingHook.cs @@ -22,18 +22,21 @@ public class dGrapplingHook : NetworkBehaviour float inclinationAngle; float theta = -1; - private float maxSwingSpeed = 90; - private float minSwingSpeed = 10; - private float swingAcc = 5f; + private float maxSwingSpeed = 50; + private float minSwingSpeed = 20; + private float swingAcc = 3f; private float swingSpeed = 10; - private float swingMom = 50; + private float swingMom; + private float maxSwingMom = 60; + private Vector3 tensionMomDirection; private Vector3 hookPointRight; private Vector3 momDirection; + private Vector3 curXZDir; private Vector3 oldXZDir; - private float flip = -1; // flip variables for swing momentum + private bool swingback = false; //swing the player back private float oldSwingMom; @@ -41,6 +44,10 @@ public class dGrapplingHook : NetworkBehaviour float tensionForce; public Vector3 forceDirection; + private Vector3 tempRelease; + private Vector3 lerpRelease; + bool release = false; + // Start is called before the first frame update void Start() @@ -68,13 +75,18 @@ public class dGrapplingHook : NetworkBehaviour ropeLength = Vector3.Distance(gameObject.transform.position, hookPoint.transform.position); oldXZDir = (new Vector3(hookPoint.transform.position.x,0,hookPoint.transform.position.z) - new Vector3(transform.position.x,0,transform.position.z)).normalized; curXZDir = (new Vector3(hookPoint.transform.position.x,0,hookPoint.transform.position.z) - new Vector3(transform.position.x,0,transform.position.z)).normalized; + swingMom = CalculateSwingMom(playerMovement.driftVel.magnitude * 50f); oldSwingMom = swingMom; + playerMovement.g = -1; isGrappled = true; //toggle grappling state + release = false; + lerpRelease = Vector3.zero; } } else //Else we are grappling { isGrappled = false; //toggle grappling state to release + release = true; playerMovement.g = 0; } } @@ -109,7 +121,6 @@ public class dGrapplingHook : NetworkBehaviour //Debug.Log(ropeLength.ToString()); } //Debug.Log(Vector3.Distance(gameObject.transform.position, hookPoint.transform.position)); - Debug.Log(ropeLength); //Calculate tether force direction based on hookpoint if (Vector3.Distance(gameObject.transform.position, hookPoint.transform.position) >= ropeLength ) { @@ -130,19 +141,38 @@ public class dGrapplingHook : NetworkBehaviour swingMom -= .5f; } } + else{ + swingMom = CalculateSwingMom(playerMovement.driftVel.magnitude * 50f); + } + if(swingMom<0) swingMom = 0; + + tempRelease = CalculateSwingReleaseForce(); } - else if(!isGrappled || playerMovement.isGrounded){ - flip = -1; + else if(!isGrappled){ + //Reset force direction after unhook + forceDirection = Vector3.zero; swingback = true; - swingMom = 50; + + if(release){ + lerpRelease = Vector3.Lerp(lerpRelease, tempRelease, 10 * Time.deltaTime); + movementController.Move(lerpRelease); + } + + } + //WILL NEED ADJUSTMENT OR REMOVAL IN THE FUTURE //ungrapple on jump - if(playerMovement.GetJumpPressed() && !playerMovement.isGrounded) isGrappled = false; - - //Reset force direction after unhook - if(isGrappled == false) forceDirection = Vector3.zero; + if(playerMovement.GetJumpPressed() && !playerMovement.isGrounded && isGrappled){ + release = true; + isGrappled = false; + } + if(playerMovement.isGrounded){ + swingback = true; + release = false; + } + Debug.Log(playerMovement.isGrounded); } //Finds the nearest hook to the player @@ -193,7 +223,7 @@ public class dGrapplingHook : NetworkBehaviour hookPointRight = Vector3.Cross(oldXZDir, transform.up).normalized; momDirection = -1 * Vector3.Cross(hookPointRight, tensionMomDirection).normalized; - if(oldXZDir != curXZDir && flip == -1){ + if(oldXZDir != curXZDir){ //midpointMom = swingMom; swingback = false; Debug.Log("flip"); @@ -212,8 +242,20 @@ public class dGrapplingHook : NetworkBehaviour } //Calculates the players initial swing momentum using their height and their current velocity - float CalculateSwingMom(Vector3 playerSpeed){ - return 0.0f; + float CalculateSwingMom(float playerSpeed){ + + //Calculate the players height compared to the lowest point in the swing + float swingHeight = transform.position.y - (hookPoint.transform.position.y - ropeLength); + if(swingHeight <= 1){ + swingHeight = 1; + } + + float sMom = playerSpeed + (swingHeight*2); + if(sMom > maxSwingMom){ + sMom = maxSwingMom; + } + Debug.Log(playerSpeed); + return sMom; } //Special movement for the player while they swing @@ -262,4 +304,14 @@ public class dGrapplingHook : NetworkBehaviour return tenDirOffset * offsetPower * Time.deltaTime; } + + Vector3 CalculateSwingReleaseForce(){ + Vector3 releaseSwingForceDirection = momDirection * (swingMom + 20); + releaseSwingForceDirection = new Vector3(releaseSwingForceDirection.x,0,releaseSwingForceDirection.z); + + if(swingMom < 5){ + return Vector3.zero; + } + return releaseSwingForceDirection * Time.deltaTime; + } } diff --git a/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dNitro.cs b/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dNitro.cs index 613d12b..3769b23 100644 --- a/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dNitro.cs +++ b/Assets/Scripts/PlayerScripts/DebugPlayer/DebugItems/dNitro.cs @@ -14,7 +14,7 @@ public class dNitro : MonoBehaviour // Start is called before the first frame update void Start() { - driver = GameObject.Find("Canvas").GetComponent(); + //driver = GameObject.Find("Canvas").GetComponent(); playerStats = GetComponent(); } diff --git a/Assets/Scripts/PlayerScripts/DebugPlayer/dPlayerMovement.cs b/Assets/Scripts/PlayerScripts/DebugPlayer/dPlayerMovement.cs index a5be952..7b24242 100644 --- a/Assets/Scripts/PlayerScripts/DebugPlayer/dPlayerMovement.cs +++ b/Assets/Scripts/PlayerScripts/DebugPlayer/dPlayerMovement.cs @@ -220,6 +220,7 @@ public class dPlayerMovement : NetworkBehaviour } //Move Player if(grapple.isGrappled && !isGrounded){ + driftVel = Vector3.zero; moveController.Move(((moveY + grapple.forceDirection) * Time.deltaTime)); } else{ @@ -236,7 +237,7 @@ public class dPlayerMovement : NetworkBehaviour { WallCheck(); //If nothing is pressed speed is 0 - if ((Input.GetAxis("Vertical") == 0.0f && Input.GetAxis("Horizontal") == 0.0f) || isSliding ||(grapple.isGrappled && !isGrounded)) + if ((Input.GetAxis("Vertical") == 0.0f && Input.GetAxis("Horizontal") == 0.0f) || isSliding || (grapple.isGrappled && !isGrounded)) { pStats.CurVel = 0.0f; return pStats.CurVel; diff --git a/Assets/Scripts/PlayerScripts/PlayerItems/ItemScripts/Dash.cs b/Assets/Scripts/PlayerScripts/PlayerItems/ItemScripts/Dash.cs index cfe5980..70ea57f 100644 --- a/Assets/Scripts/PlayerScripts/PlayerItems/ItemScripts/Dash.cs +++ b/Assets/Scripts/PlayerScripts/PlayerItems/ItemScripts/Dash.cs @@ -20,7 +20,7 @@ public class Dash : NetworkBehaviour{ PlayerMovement pMove; void Start(){ - driver = GameObject.Find("Canvas").GetComponent(); + //driver = GameObject.Find("Canvas").GetComponent(); characterController = this.gameObject.GetComponent(); pMove = GetComponent(); } @@ -33,7 +33,7 @@ public class Dash : NetworkBehaviour{ void DashPlayer(){ if (!IsLocalPlayer) { return; } if(characterController.enabled == true){ - if (Input.GetKeyDown(KeyCode.E) && isOnCoolDown == false) + if (Input.GetKeyDown(KeyCode.R) && isOnCoolDown == false) { currentDashTime = 0; StartCoroutine(startCoolDown()); diff --git a/Assets/Scripts/PlayerScripts/PlayerItems/ItemScripts/Nitro.cs b/Assets/Scripts/PlayerScripts/PlayerItems/ItemScripts/Nitro.cs index 5104801..0f28ab8 100644 --- a/Assets/Scripts/PlayerScripts/PlayerItems/ItemScripts/Nitro.cs +++ b/Assets/Scripts/PlayerScripts/PlayerItems/ItemScripts/Nitro.cs @@ -13,7 +13,7 @@ public class Nitro : MonoBehaviour // Start is called before the first frame update void Start() { - driver = GameObject.Find("Canvas").GetComponent(); + //driver = GameObject.Find("Canvas").GetComponent(); playerStats = GetComponent(); } diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index 8280f90..66de2d9 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -9,17 +9,23 @@ EditorUserSettings: value: 22424703114646680e0b0227036c731f1415016439262f2434 flags: 0 RecentlyUsedScenePath-1: - value: 22424703114646680e0b0227036c6f02131b172b282d347e38271427fb + value: 22424703114646680e0b0227036c6b19021b1d192f2d2835633c133af6f9 flags: 0 RecentlyUsedScenePath-2: - value: 22424703114646680e0b0227036c78111b125507233d28242c20137df7ee3d2cfb + value: 22424703114646680e0b0227036c6f1f05033f2b212d68252320092a flags: 0 RecentlyUsedScenePath-3: - value: 22424703114646680e0b0227036c7b151b180b6501273035202c1327d1e33136e7a923e7ee2e26 + value: 22424703114646680e0b0227036c6f02131b172b282d347e38271427fb flags: 0 RecentlyUsedScenePath-4: value: 22424703114646680e0b0227036c78111b125507233d28242c20137df7ee3d2cfb flags: 0 + RecentlyUsedScenePath-5: + value: 22424703114646680e0b0227036c7b151b180b6501273035202c1327d1e33136e7a923e7ee2e26 + flags: 0 + RecentlyUsedScenePath-6: + value: 22424703114646680e0b0227036c78111b125507233d28242c20137df7ee3d2cfb + flags: 0 vcSharedLogLevel: value: 0d5e400f0650 flags: 0