change: rebuilt grapple
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: dce5b93d5dab8754ba1e190d835dc63c
|
guid: e3074f8f2c7f63f4980f3b22cab464f5
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: fb87f5f35d1ed2644b3e02293ec71bc0
|
guid: 60be2281fe1b6434183f4b2396cc7cd0
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: c2ae6811bd56a6245a6ab9ec1b0503ae
|
guid: beebc26815c062d4c80362506bb8ad84
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
mainObjectFileID: 11400000
|
mainObjectFileID: 11400000
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ MonoBehaviour:
|
|||||||
_version: 3.31
|
_version: 3.31
|
||||||
_category:
|
_category:
|
||||||
_comments:
|
_comments:
|
||||||
_translation: {x: 442.93335, y: -225.00038}
|
_translation: {x: 296, y: -43}
|
||||||
_zoomFactor: 1
|
_zoomFactor: 1
|
||||||
_haltSerialization: 0
|
_haltSerialization: 0
|
||||||
_externalSerializationFile: {fileID: 0}
|
_externalSerializationFile: {fileID: 0}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: f9aba4b029eacea44966829321f0124a
|
guid: 40971083372a2534babfd95df6867650
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
mainObjectFileID: 11400000
|
mainObjectFileID: 11400000
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ MonoBehaviour:
|
|||||||
_version: 3.31
|
_version: 3.31
|
||||||
_category:
|
_category:
|
||||||
_comments:
|
_comments:
|
||||||
_translation: {x: -82, y: -349}
|
_translation: {x: 92, y: 23}
|
||||||
_zoomFactor: 1
|
_zoomFactor: 1
|
||||||
_haltSerialization: 0
|
_haltSerialization: 0
|
||||||
_externalSerializationFile: {fileID: 0}
|
_externalSerializationFile: {fileID: 0}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 58a4147d2b9083846957575fc3b16667
|
guid: 9c8da50e4d543dc438c126a404033048
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 8e19eb4aa4fac2a409e792d0d3e5f944
|
guid: e4ca318d34698fe41ba99a765e54e4c2
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
mainObjectFileID: 11400000
|
mainObjectFileID: 11400000
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 652c4cc5d47d8de45a54e21abc9d8d1a
|
guid: 94c7611bb3f64b248940847af54844cf
|
||||||
ScriptedImporter:
|
ScriptedImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
|||||||
@@ -50145,7 +50145,7 @@ MonoBehaviour:
|
|||||||
Owner: {fileID: 402424907}
|
Owner: {fileID: 402424907}
|
||||||
Enabled: 1
|
Enabled: 1
|
||||||
Input:
|
Input:
|
||||||
InputAction: {fileID: 6185001796860367008, guid: 652c4cc5d47d8de45a54e21abc9d8d1a, type: 3}
|
InputAction: {fileID: 6185001796860367008, guid: 94c7611bb3f64b248940847af54844cf, type: 3}
|
||||||
Gain: 200
|
Gain: 200
|
||||||
LegacyInput:
|
LegacyInput:
|
||||||
LegacyGain: 200
|
LegacyGain: 200
|
||||||
@@ -50158,7 +50158,7 @@ MonoBehaviour:
|
|||||||
Owner: {fileID: 402424907}
|
Owner: {fileID: 402424907}
|
||||||
Enabled: 1
|
Enabled: 1
|
||||||
Input:
|
Input:
|
||||||
InputAction: {fileID: 6185001796860367008, guid: 652c4cc5d47d8de45a54e21abc9d8d1a, type: 3}
|
InputAction: {fileID: 6185001796860367008, guid: 94c7611bb3f64b248940847af54844cf, type: 3}
|
||||||
Gain: -100
|
Gain: -100
|
||||||
LegacyInput:
|
LegacyInput:
|
||||||
LegacyGain: -200
|
LegacyGain: -200
|
||||||
@@ -99261,6 +99261,8 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
outputMoveDirection: {x: 0, y: 0, z: 0}
|
outputMoveDirection: {x: 0, y: 0, z: 0}
|
||||||
|
additionalMoveDirection: {x: 0, y: 0, z: 0}
|
||||||
|
gravitySmooth: 0
|
||||||
data:
|
data:
|
||||||
accelerationSmoothing: 4
|
accelerationSmoothing: 4
|
||||||
deaccelerationSmoothing: 6
|
deaccelerationSmoothing: 6
|
||||||
@@ -99273,6 +99275,7 @@ MonoBehaviour:
|
|||||||
gravityMax: 8
|
gravityMax: 8
|
||||||
gravityAcceleration: 1.3
|
gravityAcceleration: 1.3
|
||||||
gravityScale: 1
|
gravityScale: 1
|
||||||
|
settingsChangeSmoothing: 6
|
||||||
rotateFacing:
|
rotateFacing:
|
||||||
rid: 2028245219396813027
|
rid: 2028245219396813027
|
||||||
rotationSpeed: 10
|
rotationSpeed: 10
|
||||||
@@ -99290,6 +99293,7 @@ MonoBehaviour:
|
|||||||
gravityMax: 8
|
gravityMax: 8
|
||||||
gravityAcceleration: 1
|
gravityAcceleration: 1
|
||||||
gravityScale: 1
|
gravityScale: 1
|
||||||
|
settingsChangeSmoothing: 6
|
||||||
rotateFacing:
|
rotateFacing:
|
||||||
rid: -2
|
rid: -2
|
||||||
rotationSpeed: 5
|
rotationSpeed: 5
|
||||||
@@ -99332,7 +99336,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 62899f850307741f2a39c98a8b639597, type: 3}
|
m_Script: {fileID: 11500000, guid: 62899f850307741f2a39c98a8b639597, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_Actions: {fileID: -944628639613478452, guid: 652c4cc5d47d8de45a54e21abc9d8d1a, type: 3}
|
m_Actions: {fileID: -944628639613478452, guid: 94c7611bb3f64b248940847af54844cf, type: 3}
|
||||||
m_NotificationBehavior: 0
|
m_NotificationBehavior: 0
|
||||||
m_UIInputModule: {fileID: 0}
|
m_UIInputModule: {fileID: 0}
|
||||||
m_DeviceLostEvent:
|
m_DeviceLostEvent:
|
||||||
@@ -99503,17 +99507,18 @@ MonoBehaviour:
|
|||||||
Smoothing","value":{},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration
|
Smoothing","value":{},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration
|
||||||
Smoothing","value":{},"changeValue":1},"jumpPower":{"label":"Jump Power","value":{}},"jumpPowerDecay":{"label":"Jump
|
Smoothing","value":{},"changeValue":1},"jumpPower":{"label":"Jump Power","value":{}},"jumpPowerDecay":{"label":"Jump
|
||||||
Decay Speed","value":{}},"gravityPower":{"label":"Gravity Power","value":{},"changeValue":1},"gravityMax":{"label":"Gravity
|
Decay Speed","value":{}},"gravityPower":{"label":"Gravity Power","value":{},"changeValue":1},"gravityMax":{"label":"Gravity
|
||||||
Max","value":{}},"gravityAcceleration":{"label":"Gravity Acceleration Speed","value":{},"changeValue":1},"gravityScale":{"label":"Gravity
|
Max","value":{},"changeValue":1},"gravityAcceleration":{"label":"Gravity Acceleration
|
||||||
Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotationSpeed":{"label":"Rotation
|
Speed","value":{},"changeValue":1},"gravityScale":{"label":"Gravity Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings
|
||||||
Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation
|
Change Smoothing","value":{}},"rotationSpeed":{"label":"Rotation Speed","value":{}},"rotationSmoothing":{"label":"Rotation
|
||||||
Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"airDirection":{"_name":"airMoveDirection","_targetVariableID":"2fc91db6-09dd-4a1f-9195-426a0c44de31"},"jumpPower":{"_name":"jumpPower","_targetVariableID":"9a82efee-e317-423c-ad6e-5ef7e6145396"},"targetLocation":{"_name":"_grappleLaunchDir"},"offset":{"_value":{"y":1.0}},"relativeRotation":{},"launchRelativeTo":{},"useRelativeForce":{"_value":true},"minimumForce":{},"maximumForce":{"_value":100.0},"forceRelativeToDistance":{"_value":4.0},"force":{},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.StartLaunchJump"},{"grapplePoint":{"_name":"_grappleLaunchDir"},"offset":{},"pullAccelerationSpeed":{},"pullDeaccelerationSpeed":{},"pullTimeRange":{},"pullSpeedRange":{"_value":{"x":5.0,"y":20.0}},"slowdownDistance":{"_value":40.0},"pullSpeedCurve":{"_value":{"keys":[{"time":0.006996155,"value":0.4524789,"tangentMode":0,"inTangent":0.1111637,"outTangent":0.1111637},{"time":0.2206978,"value":0.7016913,"tangentMode":0,"inTangent":0.5933766,"outTangent":0.5933766},{"time":0.4624784,"value":0.7784544,"tangentMode":0,"inTangent":0.081825,"outTangent":0.081825},{"time":1.0,"value":0.4377128,"tangentMode":0,"inTangent":-1.657803,"outTangent":-1.657803}],"preWrapMode":8,"postWrapMode":8}},"endDeaccelerationCurve":{"_value":{"keys":[{"time":0.09687042,"value":1.0,"tangentMode":136,"inTangent":0.0,"outTangent":0.0},{"time":0.9987154,"value":0.4624017,"tangentMode":136,"inTangent":0.0,"outTangent":0.0}],"preWrapMode":8,"postWrapMode":8}},"breakAtDotProduct":0.5,"$type":"NodeCanvas.Tasks.Actions.DoGrapplePull"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":0.5019608,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Grapple
|
Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"airDirection":{"_name":"airMoveDirection","_targetVariableID":"2fc91db6-09dd-4a1f-9195-426a0c44de31"},"jumpPower":{"_name":"jumpPower","_targetVariableID":"9a82efee-e317-423c-ad6e-5ef7e6145396"},"targetLocation":{"_name":"_grappleLaunchDir"},"offset":{"_value":{"y":1.0}},"relativeRotation":{},"launchRelativeTo":{},"useRelativeForce":{"_value":true},"minimumForce":{},"maximumForce":{"_value":100.0},"forceRelativeToDistance":{"_value":4.0},"force":{},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.StartLaunchJump"},{"grapplePoint":{"_name":"_grappleLaunchDir"},"offset":{},"pullAccelerationSpeed":{},"pullDeaccelerationSpeed":{},"pullTimeRange":{},"pullSpeedRange":{"_value":{"x":5.0,"y":20.0}},"slowdownDistance":{"_value":40.0},"pullSpeedCurve":{"_value":{"keys":[{"time":0.006996155,"value":0.4524789,"tangentMode":0,"inTangent":0.1111637,"outTangent":0.1111637},{"time":0.2206978,"value":0.7016913,"tangentMode":0,"inTangent":0.5933766,"outTangent":0.5933766},{"time":0.4624784,"value":0.7784544,"tangentMode":0,"inTangent":0.081825,"outTangent":0.081825},{"time":1.0,"value":0.4377128,"tangentMode":0,"inTangent":-1.657803,"outTangent":-1.657803}],"preWrapMode":8,"postWrapMode":8}},"endDeaccelerationCurve":{"_value":{"keys":[{"time":0.09687042,"value":1.0,"tangentMode":136,"inTangent":0.0,"outTangent":0.0},{"time":0.9987154,"value":0.4624017,"tangentMode":136,"inTangent":0.0,"outTangent":0.0}],"preWrapMode":8,"postWrapMode":8}},"breakAtDotProduct":-0.3,"$type":"NodeCanvas.Tasks.Actions.DoGrapplePull"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":0.5019608,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Grapple
|
||||||
Launch","_position":{"x":-745.9385,"y":-369.6954},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"8"},{"_onEnterList":{"executionMode":1,"actions":[]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4132327,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Post
|
Launch","_position":{"x":-746.9398,"y":-370.6968},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"8"},{"_onEnterList":{"executionMode":1,"actions":[]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4132327,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Post
|
||||||
Grapple Jump","_position":{"x":-343.0,"y":-614.0},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"9"},{"_actionList":{"actions":[{"moveSpeed":{"label":"Move
|
Grapple Jump","_position":{"x":-343.0,"y":-614.0},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"9"},{"_actionList":{"actions":[{"moveSpeed":{"label":"Move
|
||||||
Speed","value":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air
|
Speed","value":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air
|
||||||
Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration
|
Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration
|
||||||
Smoothing","value":{},"changeValue":1},"jumpPower":{"label":"Jump Power","value":{}},"jumpPowerDecay":{"label":"Jump
|
Smoothing","value":{},"changeValue":1},"jumpPower":{"label":"Jump Power","value":{}},"jumpPowerDecay":{"label":"Jump
|
||||||
Decay Speed","value":{},"changeValue":2},"gravityPower":{"label":"Gravity Power","value":{}},"gravityMax":{"label":"Gravity
|
Decay Speed","value":{},"changeValue":2},"gravityPower":{"label":"Gravity Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity
|
||||||
Max","value":{}},"gravityAcceleration":{"label":"Gravity Acceleration Speed","value":{},"changeValue":1},"gravityScale":{"label":"Gravity
|
Max","value":{},"changeValue":2},"gravityAcceleration":{"label":"Gravity Acceleration
|
||||||
|
Speed","value":{"_value":0.5},"changeValue":1},"gravityScale":{"label":"Gravity
|
||||||
Scale","value":{},"changeValue":2},"settingsChangeSmoothing":{"label":"Settings
|
Scale","value":{},"changeValue":2},"settingsChangeSmoothing":{"label":"Settings
|
||||||
Change Smoothing","value":{}},"rotationSpeed":{"label":"Rotation Speed","value":{}},"rotationSmoothing":{"label":"Rotation
|
Change Smoothing","value":{}},"rotationSpeed":{"label":"Rotation Speed","value":{}},"rotationSmoothing":{"label":"Rotation
|
||||||
Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"valueA":{"_name":"newAirMoveSmoothing","_targetVariableID":"9ba7a222-e29f-4ef5-8f1e-144189e5e5d3"},"valueB":{"_value":0.6},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.SetFloat"},{"eventName":{"_value":"Delay
|
Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"valueA":{"_name":"newAirMoveSmoothing","_targetVariableID":"9ba7a222-e29f-4ef5-8f1e-144189e5e5d3"},"valueB":{"_value":0.6},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.SetFloat"},{"eventName":{"_value":"Delay
|
||||||
@@ -99684,7 +99689,7 @@ MonoBehaviour:
|
|||||||
Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotationSpeed":{"label":"Rotation
|
Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotationSpeed":{"label":"Rotation
|
||||||
Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation
|
Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation
|
||||||
Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"_color":{"r":0.5019608,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Grapple
|
Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"_color":{"r":0.5019608,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Grapple
|
||||||
Pull","_position":{"x":-534.6552,"y":-152.7098},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"26"},{"_subTree":{"_value":1},"_variablesMap":[{"_targetSubGraphVariableID":"e1cfd0be-7f55-420d-bdd8-e72531fc61ba","_canWrite":true,"_type":"UnityEngine.Transform","_value":{"$content":2,"$type":"UnityEngine.Transform"}},{"_targetSubGraphVariableID":"c4e68b75-5129-428c-8177-abb7b38986f5","_canRead":true,"_canWrite":true,"_type":"PlayerFacingDirection","_name":"facingDirection","_targetVariableID":"ff039cd9-e306-4c88-84db-54cbd3708ed5"}],"_position":{"x":108.4589,"y":186.5594},"$type":"NodeCanvas.StateMachines.ConcurrentSubTree"},{"_subTree":{"_value":3},"_tag":"","_position":{"x":139.1634,"y":300.6739},"_comment":"","$type":"NodeCanvas.StateMachines.ConcurrentSubTree"},{"_conditionList":{"conditions":[{"valueA":{"_name":"myBoolean","_targetVariableID":"c3172967-7d7a-44ba-837f-55b966e121b3"},"valueB":{},"$type":"NodeCanvas.Tasks.Conditions.CheckBoolean"}]},"_actionList":{"executionMode":1,"actions":[{"grapplePoint":{"_name":"_grappleLaunchDir"},"offset":{},"pullAccelerationSpeed":{},"pullDeaccelerationSpeed":{},"pullTimeRange":{},"pullSpeedRange":{"_value":{"y":50.0}},"slowdownDistance":{"_value":40.0},"pullSpeedCurve":{"_value":{"keys":[{"time":0.006996155,"value":0.4524789,"tangentMode":0,"inTangent":0.1111637,"outTangent":0.1111637},{"time":0.2206978,"value":0.7016913,"tangentMode":0,"inTangent":0.5933766,"outTangent":0.5933766},{"time":0.4624784,"value":0.7784544,"tangentMode":0,"inTangent":0.081825,"outTangent":0.081825},{"time":1.0,"value":0.4377128,"tangentMode":0,"inTangent":-1.657803,"outTangent":-1.657803}],"preWrapMode":8,"postWrapMode":8}},"endDeaccelerationCurve":{"_value":{"keys":[{"time":0.09687042,"value":1.0,"tangentMode":136,"inTangent":0.0,"outTangent":0.0},{"time":0.9987154,"value":0.4624017,"tangentMode":136,"inTangent":0.0,"outTangent":0.0}],"preWrapMode":8,"postWrapMode":8}},"$type":"NodeCanvas.Tasks.Actions.DoGrapplePull"}]},"_position":{"x":-695.7593,"y":411.6037},"$type":"NodeCanvas.StateMachines.OnFSMUpdate"},{"_conditionList":{"conditions":[]},"_actionList":{"executionMode":1,"actions":[{"targetVector":{"_name":"outputMoveDirection","_targetVariableID":"3b9833f5-870a-4182-9824-e31a9896eec2"},"x":{"_name":""},"y":{"_name":"_currentYMoveDirection"},"z":{"_name":""},"$type":"NodeCanvas.Tasks.Actions.DecomposeVector"}]},"_position":{"x":-9.357971,"y":610.3325},"$type":"NodeCanvas.StateMachines.OnFSMUpdate"},{"_onEnterList":{"executionMode":1,"actions":[]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"_color":{"r":0.4980392,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Airborne
|
Pull","_position":{"x":-534.6552,"y":-152.7098},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"26"},{"_subTree":{"_value":1},"_variablesMap":[{"_targetSubGraphVariableID":"e1cfd0be-7f55-420d-bdd8-e72531fc61ba","_canWrite":true,"_type":"UnityEngine.Transform","_value":{"$content":2,"$type":"UnityEngine.Transform"}},{"_targetSubGraphVariableID":"c4e68b75-5129-428c-8177-abb7b38986f5","_canWrite":true,"_type":"PlayerFacingDirection","_value":{"$content":0,"$type":"PlayerFacingDirection"}}],"_position":{"x":108.4589,"y":186.5594},"$type":"NodeCanvas.StateMachines.ConcurrentSubTree"},{"_subTree":{"_value":3},"_tag":"","_position":{"x":139.1634,"y":300.6739},"_comment":"","$type":"NodeCanvas.StateMachines.ConcurrentSubTree"},{"_conditionList":{"conditions":[{"valueA":{"_name":"myBoolean","_targetVariableID":"c3172967-7d7a-44ba-837f-55b966e121b3"},"valueB":{},"$type":"NodeCanvas.Tasks.Conditions.CheckBoolean"}]},"_actionList":{"executionMode":1,"actions":[{"grapplePoint":{"_name":"_grappleLaunchDir"},"offset":{},"pullAccelerationSpeed":{},"pullDeaccelerationSpeed":{},"pullTimeRange":{},"pullSpeedRange":{"_value":{"y":50.0}},"slowdownDistance":{"_value":40.0},"pullSpeedCurve":{"_value":{"keys":[{"time":0.006996155,"value":0.4524789,"tangentMode":0,"inTangent":0.1111637,"outTangent":0.1111637},{"time":0.2206978,"value":0.7016913,"tangentMode":0,"inTangent":0.5933766,"outTangent":0.5933766},{"time":0.4624784,"value":0.7784544,"tangentMode":0,"inTangent":0.081825,"outTangent":0.081825},{"time":1.0,"value":0.4377128,"tangentMode":0,"inTangent":-1.657803,"outTangent":-1.657803}],"preWrapMode":8,"postWrapMode":8}},"endDeaccelerationCurve":{"_value":{"keys":[{"time":0.09687042,"value":1.0,"tangentMode":136,"inTangent":0.0,"outTangent":0.0},{"time":0.9987154,"value":0.4624017,"tangentMode":136,"inTangent":0.0,"outTangent":0.0}],"preWrapMode":8,"postWrapMode":8}},"$type":"NodeCanvas.Tasks.Actions.DoGrapplePull"}]},"_position":{"x":-695.7593,"y":411.6037},"$type":"NodeCanvas.StateMachines.OnFSMUpdate"},{"_conditionList":{"conditions":[]},"_actionList":{"executionMode":1,"actions":[{"targetVector":{"_name":"outputMoveDirection","_targetVariableID":"3b9833f5-870a-4182-9824-e31a9896eec2"},"x":{"_name":""},"y":{"_name":"_currentYMoveDirection"},"z":{"_name":""},"$type":"NodeCanvas.Tasks.Actions.DecomposeVector"}]},"_position":{"x":-9.357971,"y":610.3325},"$type":"NodeCanvas.StateMachines.OnFSMUpdate"},{"_onEnterList":{"executionMode":1,"actions":[]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"_color":{"r":0.4980392,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Airborne
|
||||||
Standby","_position":{"x":1509.989,"y":-548.8954},"$type":"NodeCanvas.StateMachines.SuperActionState"},{"_subTree":{"_value":4},"_position":{"x":1132.543,"y":-344.117},"$type":"NodeCanvas.StateMachines.ConcurrentSubTree"}],"connections":[{"_condition":{"valueA":{"_name":"isGrounded","_targetVariableID":"619300a4-be8b-4ad4-ba2a-978468094ba2"},"valueB":{},"$type":"NodeCanvas.Tasks.Conditions.CheckBoolean"},"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"actionName":{"_value":"Jump"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"21"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"eventName":{"_value":"Grapple
|
Standby","_position":{"x":1509.989,"y":-548.8954},"$type":"NodeCanvas.StateMachines.SuperActionState"},{"_subTree":{"_value":4},"_position":{"x":1132.543,"y":-344.117},"$type":"NodeCanvas.StateMachines.ConcurrentSubTree"}],"connections":[{"_condition":{"valueA":{"_name":"isGrounded","_targetVariableID":"619300a4-be8b-4ad4-ba2a-978468094ba2"},"valueB":{},"$type":"NodeCanvas.Tasks.Conditions.CheckBoolean"},"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"actionName":{"_value":"Jump"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"21"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"eventName":{"_value":"Grapple
|
||||||
Launch"},"saveEventValue":{"_name":"_grappleLaunchDir"},"$type":"NodeCanvas.Tasks.Conditions.CheckEvent`1[[UnityEngine.Vector3,
|
Launch"},"saveEventValue":{"_name":"_grappleLaunchDir"},"$type":"NodeCanvas.Tasks.Conditions.CheckEvent`1[[UnityEngine.Vector3,
|
||||||
UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"},"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"eventName":{"_value":"Grapple
|
UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"},"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"eventName":{"_value":"Grapple
|
||||||
@@ -99713,17 +99718,17 @@ MonoBehaviour:
|
|||||||
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"}}}}'
|
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"}}}}'
|
||||||
_boundGraphObjectReferences:
|
_boundGraphObjectReferences:
|
||||||
- {fileID: 0}
|
- {fileID: 0}
|
||||||
- {fileID: 11400000, guid: c2ae6811bd56a6245a6ab9ec1b0503ae, type: 2}
|
- {fileID: 11400000, guid: beebc26815c062d4c80362506bb8ad84, type: 2}
|
||||||
- {fileID: 330585546}
|
- {fileID: 402424906}
|
||||||
- {fileID: 11400000, guid: f9aba4b029eacea44966829321f0124a, type: 2}
|
- {fileID: 11400000, guid: 40971083372a2534babfd95df6867650, type: 2}
|
||||||
- {fileID: 11400000, guid: 26340c3b8bba95c4396860ccfc2cd444, type: 2}
|
- {fileID: 11400000, guid: 26340c3b8bba95c4396860ccfc2cd444, type: 2}
|
||||||
- {fileID: 275656777}
|
- {fileID: 275656777}
|
||||||
_boundGraphSource:
|
_boundGraphSource:
|
||||||
_version: 3.31
|
_version: 3.31
|
||||||
_category:
|
_category:
|
||||||
_comments:
|
_comments:
|
||||||
_translation: {x: 1050, y: 569}
|
_translation: {x: 235, y: 381}
|
||||||
_zoomFactor: 0.99864507
|
_zoomFactor: 1
|
||||||
_firstActivation: 0
|
_firstActivation: 0
|
||||||
_enableAction: 0
|
_enableAction: 0
|
||||||
_disableAction: 0
|
_disableAction: 0
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ namespace NodeCanvas.Tasks.Actions {
|
|||||||
private Vector3 originalDirection;
|
private Vector3 originalDirection;
|
||||||
|
|
||||||
public float breakAtDistance;
|
public float breakAtDistance;
|
||||||
|
[Tooltip("The dot product between the current direction to the grapple point, and the direction to the grapple point when started. Starts at 1 and gradually gets closer to -1, with 0 being 90 degrees perpendicular.")]
|
||||||
public float breakAtDotProduct;
|
public float breakAtDotProduct;
|
||||||
|
|
||||||
private float currentSpeed;
|
private float currentSpeed;
|
||||||
@@ -54,6 +55,8 @@ namespace NodeCanvas.Tasks.Actions {
|
|||||||
|
|
||||||
private Transform camera;
|
private Transform camera;
|
||||||
|
|
||||||
|
Vector3 smoothedSwingDirection;
|
||||||
|
|
||||||
private float referenceSpeed;
|
private float referenceSpeed;
|
||||||
|
|
||||||
private Vector3 finalDirection;
|
private Vector3 finalDirection;
|
||||||
@@ -62,11 +65,6 @@ namespace NodeCanvas.Tasks.Actions {
|
|||||||
//Use for initialization. This is called only once in the lifetime of the task.
|
//Use for initialization. This is called only once in the lifetime of the task.
|
||||||
//Return null if init was successfull. Return an error string otherwise
|
//Return null if init was successfull. Return an error string otherwise
|
||||||
protected override string OnInit(){
|
protected override string OnInit(){
|
||||||
DebugOverlayDrawer.AddOnOverlay("Grapple", "Composite Swing Direction", Vector3.zero);
|
|
||||||
DebugOverlayDrawer.AddOnOverlay("Grapple", "Target Swing Direction", Vector3.zero);
|
|
||||||
DebugOverlayDrawer.AddOnOverlay("Grapple", "Smoothed Input", Vector3.zero);
|
|
||||||
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
|
||||||
@@ -84,74 +82,110 @@ namespace NodeCanvas.Tasks.Actions {
|
|||||||
// Get the current move direction
|
// Get the current move direction
|
||||||
velocityOnStart = agent.outputMoveDirection;
|
velocityOnStart = agent.outputMoveDirection;
|
||||||
|
|
||||||
|
// For setting finalDirection's initial value, first compose the swing variables one-time
|
||||||
|
Vector3 velocityWhenMoving = CalculateSwingDirections(Vector3.Distance(agent.transform.position, grapplePoint.value), directionOnStart);
|
||||||
|
|
||||||
// Lerp the initial direction more towards the point of the grapple and less towards current momentum if not moving fast
|
// Lerp the initial direction more towards the point of the grapple and less towards current momentum if not moving fast
|
||||||
finalDirection = Vector3.Lerp(velocityOnStart, directionOnStart, velocityOnStart.magnitude / 10f);
|
finalDirection = Vector3.Lerp(velocityOnStart, velocityWhenMoving, velocityOnStart.magnitude / 2f); // This isn't working
|
||||||
|
|
||||||
|
// Set the intial swing direction to the same thing, so it starts swinging withing snapping on start
|
||||||
|
smoothedSwingDirection = finalDirection.Flatten(null, .4f, null);
|
||||||
|
|
||||||
startTime = Time.time;
|
startTime = Time.time;
|
||||||
currentSpeed = pullSpeedCurve.value[0].value * pullSpeedRange.value.y;
|
currentSpeed = pullSpeedCurve.value[0].value * pullSpeedRange.value.y;
|
||||||
|
|
||||||
smoothedInput = agent.GetComponent<CharacterController>().velocity.normalized.Flatten(null, 0f, 0f);
|
// smoothedInput = agent.GetComponent<CharacterController>().velocity.normalized.Flatten(null, 0f, 0f);
|
||||||
|
smoothedInput = Vector3.zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Called once per frame while the action is active.
|
//Called once per frame while the action is active.
|
||||||
protected override void OnUpdate(){
|
protected override void OnUpdate(){
|
||||||
// Get direction to the point
|
agent.outputMoveDirection = Vector3.MoveTowards(agent.outputMoveDirection, Vector3.zero, .5f);
|
||||||
|
|
||||||
|
// Basic variables, direction to point and current distnace
|
||||||
Vector3 directionToPoint = agent.transform.position.DirectionTo(grapplePoint.value);
|
Vector3 directionToPoint = agent.transform.position.DirectionTo(grapplePoint.value);
|
||||||
|
float currentDist = Vector3.Distance(agent.transform.position, grapplePoint.value);
|
||||||
|
|
||||||
// Calculate input
|
// Calculate input
|
||||||
Vector2 rawInput = agent.GetComponent<PlayerControls>().rawMoveInput;
|
Vector2 rawInput = agent.GetComponent<PlayerControls>().rawMoveInput;
|
||||||
Vector3 input = new(rawInput.x, rawInput.y, 0f);
|
Vector3 input = new(rawInput.x, rawInput.y, 0f);
|
||||||
|
|
||||||
smoothedInput = Vector3.SmoothDamp(smoothedInput, input, ref smoothedInputRefVelocity, 2);
|
smoothedInput = Vector3.SmoothDamp(smoothedInput, input, ref smoothedInputRefVelocity, 1f);
|
||||||
DebugOverlayDrawer.ChangeValue("Grapple", "Smoothed Input", smoothedInput.ToString());
|
DebugOverlayDrawer.ChangeValue("Grapple", "Smoothed Input", smoothedInput.ToString());
|
||||||
|
|
||||||
// Change input handling based on position
|
// The swing angle needs to change for the downwards swing, based on distance to the ground
|
||||||
if (directionToPoint.y < 0) {
|
Physics.Raycast(agent.transform.position, Vector3.down, out RaycastHit hit);
|
||||||
|
float distanceToGround = hit.distance;
|
||||||
|
|
||||||
} else {
|
float downwardsSwingAngle = Mathf.Lerp(30, 100, distanceToGround / 20f);
|
||||||
}
|
|
||||||
|
// Altered swing angle based on distance to the grapple point, used to keep the player not too close or far
|
||||||
|
|
||||||
|
float inwardsAngle = Mathf.Lerp(0f, -60f, currentDist / -15f);
|
||||||
|
float outwardsAngle = Mathf.Lerp(0f, -60f, currentDist / 15f);
|
||||||
|
float outputAngle = inwardsAngle + outwardsAngle;
|
||||||
|
|
||||||
|
DebugOverlayDrawer.ChangeValue("Grapple", "Output Angle", outputAngle.ToString() + $"({inwardsAngle.ToString()} + {outwardsAngle.ToString()})");
|
||||||
|
|
||||||
// Create the distance variables
|
|
||||||
float currentDist = Vector3.Distance(agent.transform.position, grapplePoint.value);
|
|
||||||
|
|
||||||
// Calculate the swing direction.
|
// Calculate the swing direction.
|
||||||
// Vector3 swingDirection = Quaternion.LookRotation(smoothedInput) * directionToPoint * smoothedInput.magnitude; // Old
|
// Vector3 swingDirection = Quaternion.LookRotation(smoothedInput) * directionToPoint * smoothedInput.magnitude; // Old
|
||||||
Vector3 sidewaysSwingAngle = Quaternion.AngleAxis(90f, Vector3.up) * directionToPoint;
|
Vector3 pointDirectionXZStable = agent.transform.position.DirectionTo(grapplePoint.value.Flatten(null, agent.transform.position.y));
|
||||||
Vector3 upwardsSwingAngle = Quaternion.AngleAxis(-90f, Vector3.right) * directionToPoint;
|
Vector3 rightSwingDirectin = Quaternion.AngleAxis(100f + outputAngle, Vector3.up) * pointDirectionXZStable; // Working
|
||||||
// Vector3 downwardsSwingAngle = Quaternion.AngleAxis(90f, Vector3.right) * directionToPoint; // why not just use upwards but negative based on input on Y
|
Vector3 leftSwingDirectin = Quaternion.AngleAxis(-100f - outputAngle, Vector3.up) * pointDirectionXZStable; // Working
|
||||||
|
Vector3 upwardsSwingDirection = Quaternion.AngleAxis(-140f - outputAngle, Quaternion.LookRotation(directionToPoint) * Vector3.right) * directionToPoint; // Working
|
||||||
|
Vector3 downwardsSwingDirection = Quaternion.AngleAxis(downwardsSwingAngle, Quaternion.LookRotation(directionOnStart) * Vector3.right) * directionToPoint; // WORKING NOW!! Note: this has to rotate by directionOnStart because else it just moves towards the point
|
||||||
|
|
||||||
// Create the composite swing direction and the target swing direction
|
// Get the target swing direction. This is the direction "around" the point based on context
|
||||||
// The composite is the output while the target is the one used in calculating
|
|
||||||
Vector3 compositeSwingDirection;
|
|
||||||
Vector3 targetSwingDirection;
|
Vector3 targetSwingDirection;
|
||||||
|
|
||||||
// if (directionToPoint.y > 0) {
|
// Start with up and down
|
||||||
DebugOverlayDrawer.ChangeValue("Grapple", "Target Swing Direction", Mathf.Abs((smoothedInput.y + 1f) / 2).ToString());
|
Vector3 yAxisTargetDirection;
|
||||||
Vector3 swingAngleAbovePoint = -upwardsSwingAngle;
|
|
||||||
|
|
||||||
if (Mathf.Abs(smoothedInput.y) > .01f){
|
if (Vector3.Dot(-directionOnStart, directionToPoint) > 0) { // More than 90 degrees from the start angle, just start going forward from the swing
|
||||||
swingAngleAbovePoint = Vector3.Slerp(-upwardsSwingAngle, upwardsSwingAngle, Mathf.Abs((smoothedInput.y + 1f) / 2));
|
targetSwingDirection = finalDirection;
|
||||||
|
} else {
|
||||||
|
if (Mathf.Abs(input.y) > 0.1f) { // Input exists on up and down, switch direction based on input
|
||||||
|
yAxisTargetDirection = Vector3.Slerp(upwardsSwingDirection, downwardsSwingDirection, Mathf.Abs((input.y - 1f) / 2f));
|
||||||
|
} else { // No input on up/down controller, so swing relative to the point
|
||||||
|
if (directionToPoint.y < 0) { // Since you're under the point swing downwards
|
||||||
|
yAxisTargetDirection = downwardsSwingDirection;
|
||||||
|
} else { // Since you're over the point, swing upwards
|
||||||
|
yAxisTargetDirection = upwardsSwingDirection;
|
||||||
}
|
}
|
||||||
Vector3 axisFromInput = Vector3.zero;
|
|
||||||
|
|
||||||
if (smoothedInput.x > 0) {
|
|
||||||
axisFromInput = Vector3.Slerp(swingAngleAbovePoint, sidewaysSwingAngle, smoothedInput.x);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (smoothedInput.x < 0) {
|
if (directionToPoint.y > -.5f) {
|
||||||
axisFromInput = Vector3.Slerp(swingAngleAbovePoint, -sidewaysSwingAngle, Mathf.Abs(smoothedInput.x));
|
// yAxisTargetDirection += Vector3.up * 4f; // This works but it's making downward motion not work
|
||||||
}
|
}
|
||||||
|
|
||||||
compositeSwingDirection = Vector3.Slerp(swingAngleAbovePoint, axisFromInput, smoothedInput.x);
|
targetSwingDirection = yAxisTargetDirection * Mathf.Abs((input.y));
|
||||||
// } else {
|
|
||||||
// compositeSwingDirection = Vector3.Slerp(upwardsSwingAngle, sidewaysSwingAngle, smoothedInput.magnitude);
|
if (Mathf.Abs(input.x) > 0.1f) {
|
||||||
// }
|
Vector3 xAxisTargetDirection = Vector3.Lerp(rightSwingDirectin, leftSwingDirectin, Mathf.Abs((input.x - 1f) / 2f));
|
||||||
|
targetSwingDirection = Vector3.Slerp(targetSwingDirection, xAxisTargetDirection, Mathf.Abs((input.x)));
|
||||||
|
// targetSwingDirection = xAxisTargetDirection;
|
||||||
|
DebugOverlayDrawer.ChangeValue("Grapple", "LR Input Dot", Mathf.Abs((input.x - 1f) / 2f).ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
targetSwingDirection = targetSwingDirection.normalized;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Smooth it, but don't smooth it as well if the dot product between the new direction and current direction are too large
|
||||||
|
float newDirDot = Vector3.Dot(smoothedSwingDirection, targetSwingDirection);
|
||||||
|
newDirDot = (newDirDot + 1f) / 2f;
|
||||||
|
|
||||||
|
smoothedSwingDirection = Vector3.Slerp(smoothedSwingDirection, targetSwingDirection, 2f * Time.deltaTime * newDirDot);
|
||||||
|
|
||||||
|
// DebugOverlayDrawer.ChangeValue("Grapple", "Downwards Swing Angle", downwardsSwingDirection.ToString());
|
||||||
|
// DebugOverlayDrawer.ChangeValue("Grapple", "Upwards Swing Angle", upwardsSwingDirection.ToString());
|
||||||
|
// DebugOverlayDrawer.ChangeValue("Grapple", "Right Swing Angle", rightSwingDirectin.ToString());
|
||||||
|
// DebugOverlayDrawer.ChangeValue("Grapple", "Left Swing Angle", leftSwingDirectin.ToString());
|
||||||
|
|
||||||
// Some math for getting the Y
|
// Some math for getting the Y
|
||||||
yChangeMultipler = Mathf.Lerp(yChangeMultipler, 0f, elapsedTime * .5f); // Starts at 1 so that the player has more ability to change height on start of swing, then smooths to zero
|
yChangeMultipler = Mathf.Lerp(yChangeMultipler, 0f, elapsedTime * .5f); // Starts at 1 so that the player has more ability to change height on start of swing, then smooths to zero
|
||||||
|
|
||||||
DebugOverlayDrawer.ChangeValue("Grapple", "Composite Swing Direction", compositeSwingDirection.ToString());
|
DebugOverlayDrawer.ChangeValue("Grapple", "Composite Swing Direction", smoothedSwingDirection.ToString());
|
||||||
Debug.Log(Vector3.Dot(directionToPoint, Vector3.down));
|
|
||||||
|
|
||||||
// Speed
|
// Speed
|
||||||
float evaluatedSpeed = pullSpeedCurve.value.Evaluate(Mathf.Clamp((Time.time - startTime) / 6f, 0f, Mathf.Infinity));
|
float evaluatedSpeed = pullSpeedCurve.value.Evaluate(Mathf.Clamp((Time.time - startTime) / 6f, 0f, Mathf.Infinity));
|
||||||
@@ -177,31 +211,92 @@ namespace NodeCanvas.Tasks.Actions {
|
|||||||
// Soften the speed changes
|
// Soften the speed changes
|
||||||
currentSpeed = Mathf.Lerp(currentSpeed, speedAgainstCurve, 10f * Time.deltaTime);
|
currentSpeed = Mathf.Lerp(currentSpeed, speedAgainstCurve, 10f * Time.deltaTime);
|
||||||
|
|
||||||
|
// Test
|
||||||
|
finalDirection = Vector3.Slerp(finalDirection, smoothedSwingDirection, (elapsedTime / 1f) + Mathf.Max(0f, smoothedInput.magnitude)); // Set to smoothedSwingDirection when done testing
|
||||||
|
|
||||||
// Gizmos
|
// Gizmos
|
||||||
gizmoVertValue = finalDirection.y;
|
gizmoVertValue = finalDirection.y;
|
||||||
gizmosSmoothedInput = smoothedInput;
|
gizmosSmoothedInput = smoothedInput;
|
||||||
gizmoPointDirection = directionToPoint;
|
gizmoPointDirection = targetSwingDirection;
|
||||||
gizmoSwingDirection = swingAngleAbovePoint;
|
gizmoSwingDirection = smoothedSwingDirection; // Set to smoothedSwingDirection when done testing
|
||||||
gizmoFinalDirection = finalDirection;
|
gizmoFinalDirection = finalDirection;
|
||||||
|
|
||||||
//Test
|
|
||||||
finalDirection = gizmoSwingDirection;
|
|
||||||
|
|
||||||
|
agent.SetNewDirection(Vector3.Lerp(agent.additionalMoveDirection, finalDirection.Flatten(null, 0), 1f * Time.deltaTime));
|
||||||
agent.SetNewDirection(finalDirection.Flatten(null, 0));
|
|
||||||
agent.SetNewGravity(finalDirection.y);
|
agent.SetNewGravity(finalDirection.y);
|
||||||
agent.SmoothToSpeed(0f, 1f * Time.deltaTime, out referenceSpeed);
|
agent.SmoothToSpeed(30f, 20f * Time.deltaTime, out referenceSpeed);
|
||||||
|
|
||||||
// agent.SmoothToDirection(finalDirection.Flatten(null, 0).normalized * evaluatedSpeed, 1f * Time.deltaTime, out referenceDirection);
|
// agent.SmoothToDirection(finalDirection.Flatten(null, 0).normalized * evaluatedSpeed, 1f * Time.deltaTime, out referenceDirection);
|
||||||
// agent.SmoothToGravitation(finalDirection.y, 1f, out referenceGravity);
|
// agent.SmoothToGravitation(finalDirection.y, 1f, out referenceGravity);
|
||||||
|
|
||||||
if (Vector3.Dot(directionOnStart, directionToPoint.normalized) < breakAtDotProduct) {
|
// Calculate dot products for using to end the action
|
||||||
// EndAction(true);
|
float xzDot = Vector3.Dot(directionOnStart.Flatten(null, 0f), directionToPoint.normalized.Flatten(null, 0f));
|
||||||
|
float yDot = Vector3.Dot(directionOnStart.Flatten(0f, null, 0f), directionToPoint.normalized.Flatten(0f, null, 0f));
|
||||||
|
|
||||||
|
if (xzDot < breakAtDotProduct || yDot < -.9) { // TODO: Change .8 to a variable
|
||||||
|
EndAction(true);
|
||||||
} else if (currentDist < breakAtDistance) {
|
} else if (currentDist < breakAtDistance) {
|
||||||
EndAction(true);
|
EndAction(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vector3 CalculateSwingDirections(float currentDist, Vector3 directionToPoint){
|
||||||
|
// Get input
|
||||||
|
Vector2 rawInput = agent.GetComponent<PlayerControls>().rawMoveInput;
|
||||||
|
Vector3 input = new(rawInput.x, rawInput.y, 0f);
|
||||||
|
|
||||||
|
// The swing angle needs to change for the downwards swing, based on distance to the ground
|
||||||
|
Physics.Raycast(agent.transform.position, Vector3.down, out RaycastHit hit);
|
||||||
|
float distanceToGround = hit.distance;
|
||||||
|
|
||||||
|
float downwardsSwingAngle = Mathf.Lerp(30, 100, distanceToGround / 20f);
|
||||||
|
|
||||||
|
// Altered swing angle based on distance to the grapple point, used to keep the player not too close or far
|
||||||
|
|
||||||
|
float inwardsAngle = Mathf.Lerp(0f, -60f, currentDist / -15f);
|
||||||
|
float outwardsAngle = Mathf.Lerp(0f, -60f, currentDist / 15f);
|
||||||
|
float outputAngle = inwardsAngle + outwardsAngle;
|
||||||
|
|
||||||
|
DebugOverlayDrawer.ChangeValue("Grapple", "Output Angle", outputAngle.ToString() + $"({inwardsAngle.ToString()} + {outwardsAngle.ToString()})");
|
||||||
|
|
||||||
|
Vector3 pointDirectionXZStable = agent.transform.position.DirectionTo(grapplePoint.value.Flatten(null, agent.transform.position.y));
|
||||||
|
Vector3 rightSwingDirectin = Quaternion.AngleAxis(100f + outputAngle, Vector3.up) * pointDirectionXZStable; // Working
|
||||||
|
Vector3 leftSwingDirectin = Quaternion.AngleAxis(-100f - outputAngle, Vector3.up) * pointDirectionXZStable; // Working
|
||||||
|
Vector3 upwardsSwingDirection = Quaternion.AngleAxis(-140f - outputAngle, Quaternion.LookRotation(directionToPoint) * Vector3.right) * directionToPoint; // Working
|
||||||
|
Vector3 downwardsSwingDirection = Quaternion.AngleAxis(downwardsSwingAngle, Quaternion.LookRotation(directionOnStart) * Vector3.right) * directionToPoint; // WORKING NOW!! Note: this has to rotate by directionOnStart because else it just moves towards the point
|
||||||
|
|
||||||
|
// Get the target swing direction. This is the direction "around" the point based on context
|
||||||
|
Vector3 targetSwingDirection;
|
||||||
|
|
||||||
|
// Start with up and down
|
||||||
|
Vector3 yAxisTargetDirection;
|
||||||
|
|
||||||
|
if (Mathf.Abs(input.y) > 0.1f) { // Input exists on up and down, switch direction based on input
|
||||||
|
yAxisTargetDirection = Vector3.Slerp(upwardsSwingDirection, downwardsSwingDirection, Mathf.Abs((input.y - 1f) / 2f));
|
||||||
|
} else { // No input on up/down controller, so swing relative to the point
|
||||||
|
if (directionToPoint.y < 0) { // Since you're under the point swing downwards
|
||||||
|
yAxisTargetDirection = downwardsSwingDirection;
|
||||||
|
} else { // Since you're over the point, swing upwards
|
||||||
|
yAxisTargetDirection = downwardsSwingDirection;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (directionToPoint.y > -.5f) {
|
||||||
|
// yAxisTargetDirection += Vector3.up * 4f; // This works but it's making downward motion not work
|
||||||
|
}
|
||||||
|
|
||||||
|
targetSwingDirection = yAxisTargetDirection * Mathf.Abs((input.y));
|
||||||
|
|
||||||
|
if (Mathf.Abs(input.x) > 0.1f) {
|
||||||
|
Vector3 xAxisTargetDirection = Vector3.Lerp(rightSwingDirectin, leftSwingDirectin, Mathf.Abs((input.x - 1f) / 2f));
|
||||||
|
targetSwingDirection = Vector3.Slerp(targetSwingDirection, xAxisTargetDirection, Mathf.Abs((input.x)));
|
||||||
|
// targetSwingDirection = xAxisTargetDirection;
|
||||||
|
DebugOverlayDrawer.ChangeValue("Grapple", "LR Input Dot", Mathf.Abs((input.x - 1f) / 2f).ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return targetSwingDirection.normalized;
|
||||||
|
}
|
||||||
|
|
||||||
public void DrawGrappleGizmo(){
|
public void DrawGrappleGizmo(){
|
||||||
// Destination gizmos
|
// Destination gizmos
|
||||||
using (Draw.WithColor(Color.blue)){
|
using (Draw.WithColor(Color.blue)){
|
||||||
@@ -234,7 +329,7 @@ namespace NodeCanvas.Tasks.Actions {
|
|||||||
using (Draw.WithColor(dirColor)) {
|
using (Draw.WithColor(dirColor)) {
|
||||||
float pointLength = 1.2f;
|
float pointLength = 1.2f;
|
||||||
Vector3 pointStart = agent.transform.position + Vector3.up * .2f;
|
Vector3 pointStart = agent.transform.position + Vector3.up * .2f;
|
||||||
Vector3 pointDir = pointStart + gizmoPointDirection.normalized * pointLength;
|
Vector3 pointDir = grapplePoint.value;
|
||||||
Draw.DashedLine(pointStart, pointDir, .2f, .2f);
|
Draw.DashedLine(pointStart, pointDir, .2f, .2f);
|
||||||
Draw.ArrowheadArc(pointStart, gizmoPointDirection.normalized, pointLength, 15f);
|
Draw.ArrowheadArc(pointStart, gizmoPointDirection.normalized, pointLength, 15f);
|
||||||
Draw.Label2D(pointDir + Vector3.up * .4f, "Grapple Point Direction");
|
Draw.Label2D(pointDir + Vector3.up * .4f, "Grapple Point Direction");
|
||||||
|
|||||||
@@ -140,10 +140,8 @@ namespace Reset.Core.Tools{
|
|||||||
try {
|
try {
|
||||||
AddOnOverlay(pageName, sourceName);
|
AddOnOverlay(pageName, sourceName);
|
||||||
Instance.values[$"{pageName}/{sourceName}"].text = newValue;
|
Instance.values[$"{pageName}/{sourceName}"].text = newValue;
|
||||||
throw;
|
|
||||||
} catch (Exception exception) {
|
} catch (Exception exception) {
|
||||||
Debug.LogError($"Failed to both update an existing or create a new debug overlay: {exception.Message}" );
|
Debug.LogError($"Failed to both update an existing or create a new debug overlay: {exception.Message}" );
|
||||||
throw;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Numerics;
|
|
||||||
using NUnit.Framework.Internal;
|
using NUnit.Framework.Internal;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using ParadoxNotion.Design;
|
using ParadoxNotion.Design;
|
||||||
@@ -7,8 +6,6 @@ using Sirenix.OdinInspector;
|
|||||||
using UnityEditor.Rendering;
|
using UnityEditor.Rendering;
|
||||||
using UnityEngine.Serialization;
|
using UnityEngine.Serialization;
|
||||||
using Quaternion = UnityEngine.Quaternion;
|
using Quaternion = UnityEngine.Quaternion;
|
||||||
using Vector2 = UnityEngine.Vector2;
|
|
||||||
using Vector3 = UnityEngine.Vector3;
|
|
||||||
|
|
||||||
public enum PlayerFacingDirection{
|
public enum PlayerFacingDirection{
|
||||||
TowardsTarget = 0,
|
TowardsTarget = 0,
|
||||||
@@ -72,7 +69,7 @@ namespace Reset.Units{
|
|||||||
[ShowInInspector, ReadOnly] private float outputSpeed;
|
[ShowInInspector, ReadOnly] private float outputSpeed;
|
||||||
[ShowInInspector, ReadOnly] private float additionalSpeed;
|
[ShowInInspector, ReadOnly] private float additionalSpeed;
|
||||||
[ShowInInspector, ReadOnly] public Vector3 outputMoveDirection;
|
[ShowInInspector, ReadOnly] public Vector3 outputMoveDirection;
|
||||||
[ShowInInspector, ReadOnly] private Vector3 additionalMoveDirection;
|
[ShowInInspector, ReadOnly] public Vector3 additionalMoveDirection;
|
||||||
[ShowInInspector, ReadOnly] private Quaternion outputRotation;
|
[ShowInInspector, ReadOnly] private Quaternion outputRotation;
|
||||||
[ShowInInspector, ReadOnly] private Quaternion specifiedRotation;
|
[ShowInInspector, ReadOnly] private Quaternion specifiedRotation;
|
||||||
[ShowInInspector, ReadOnly] private float outputRotationSpeed;
|
[ShowInInspector, ReadOnly] private float outputRotationSpeed;
|
||||||
@@ -138,7 +135,7 @@ namespace Reset.Units{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void SmoothToSpeed(float desiredSpeed, float smoothing, out float referenceSpeed){
|
public void SmoothToSpeed(float desiredSpeed, float smoothing, out float referenceSpeed){
|
||||||
additionalSpeed = Mathf.Lerp(outputSpeed, desiredSpeed, smoothing * Time.deltaTime);
|
additionalSpeed = Mathf.Lerp(additionalSpeed, desiredSpeed, smoothing * Time.deltaTime);
|
||||||
|
|
||||||
referenceSpeed = additionalSpeed;
|
referenceSpeed = additionalSpeed;
|
||||||
}
|
}
|
||||||
@@ -257,7 +254,7 @@ namespace Reset.Units{
|
|||||||
float gravityMoveDirection = data.jumpPower + (Physics.gravity.y * data.gravityPower);
|
float gravityMoveDirection = data.jumpPower + (Physics.gravity.y * data.gravityPower);
|
||||||
|
|
||||||
// Commit gravity to move direction, ignoring XZ since those are done in UpdateMovementDirection
|
// Commit gravity to move direction, ignoring XZ since those are done in UpdateMovementDirection
|
||||||
// outputMoveDirection.y = Mathf.SmoothDamp(outputMoveDirection.y, gravityMoveDirection, ref gravitySmooth, .1f * Time.deltaTime);
|
outputMoveDirection.y = Mathf.SmoothDamp(outputMoveDirection.y, gravityMoveDirection, ref gravitySmooth, .1f * Time.deltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the rotation, called every frame
|
// Update the rotation, called every frame
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ EditorBuildSettings:
|
|||||||
path: Assets/Scenes/SampleScene.unity
|
path: Assets/Scenes/SampleScene.unity
|
||||||
guid: 99c9720ab356a0642a771bea13969a05
|
guid: 99c9720ab356a0642a771bea13969a05
|
||||||
m_configObjects:
|
m_configObjects:
|
||||||
com.unity.input.settings: {fileID: 11400000, guid: 8e19eb4aa4fac2a409e792d0d3e5f944, type: 2}
|
com.unity.input.settings: {fileID: 11400000, guid: e4ca318d34698fe41ba99a765e54e4c2, type: 2}
|
||||||
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3}
|
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 94c7611bb3f64b248940847af54844cf, type: 3}
|
||||||
m_UseUCBPForAssetBundles: 0
|
m_UseUCBPForAssetBundles: 0
|
||||||
|
|||||||
Reference in New Issue
Block a user