コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
            }
        }