public void updateGrappler() { pullForce = Vector3.zero; switch (grapplerState) { case GrapplerStates.hookIn: if (controller.useHook) { if (MusicEngine.Instance != null) { MusicEngine.Instance.PlaySFX(MusicEngine.SFXType.HookEject); } hook.velocity = 10 * hookLaunchSpeed * Vector3.Normalize(target.transform.position - _base.anchor); grapplerState = GrapplerStates.hookOut; setRender(true); } break; case GrapplerStates.hookOut: if (!controller.useHook) { hook.transform.position = _base.anchor; grapplerState = GrapplerStates.hookIn; setRender(false); } else if (hook.localCollisionManager.collisionData.horzCollision || hook.localCollisionManager.collisionData.vertCollision) { if (MusicEngine.Instance != null) { MusicEngine.Instance.PlaySFX(MusicEngine.SFXType.HookHit); } grapplerState = GrapplerStates.hookAttached; } break; case GrapplerStates.hookAttached: if (!controller.useHook) { hook.transform.position = _base.anchor; grapplerState = GrapplerStates.hookIn; setRender(false); } pullForce.x = pullStrength * (hook.attachPos.x - _base.anchor.x); pullForce.y = pullStrength * (hook.attachPos.y - _base.anchor.y); if (pullForce.magnitude > pullForceMax) { pullForce = pullForceMax * pullForce.normalized; } ; break; } }
public void updateGrapplingHook() { pullForce = Vector3.zero; setAnchor(new Vector3(0f, 0.4f, 0)); switch (grapplerState) { case GrapplerStates.hookIn: if (controller.useHook) { hook.velocity = 10 * hookLaunchSpeed * Vector3.Normalize(target.transform.position - anchor); grapplerState = GrapplerStates.hookOut; setRender(true); } break; case GrapplerStates.hookOut: if (!controller.useHook) { hook.transform.position = anchor; grapplerState = GrapplerStates.hookIn; setRender(false); } else if (hook.localCollisionManager.collisionData.horzCollision || hook.localCollisionManager.collisionData.vertCollision) { grapplerState = GrapplerStates.hookAttached; } break; case GrapplerStates.hookAttached: if (!controller.useHook) { hook.transform.position = anchor; grapplerState = GrapplerStates.hookIn; setRender(false); } pullForce.x = pullStrength * (hook.attachPos.x - anchor.x); pullForce.y = pullStrength * (hook.attachPos.y - anchor.y); if (pullForce.magnitude > pullForceMax) { pullForce = pullForceMax * pullForce.normalized; } ; break; } }