Exemplo n.º 1
0
 // Use this for initialization
 void Start()
 {
     _controlledTransformOriginalScale = ControlledTransform.localScale;
     _originalScale          = transform.localScale;
     _inContact              = false;
     _pickableScript         = GetComponent <IPickable>();
     _rbInContactList        = new HashSet <Rigidbody>();
     _rbToStartAngleDict     = new Dictionary <Rigidbody, float>();
     _lastPickState          = false;
     _selfColliderToTypeDict = new Dictionary <Collider, ColliderType>();
     FindChildColliders();
     _curSquashyState        = SquashyState.Idle;
     _pressingThreshFromIdle = 0.9f * _controlledTransformOriginalScale.x;
     _pressingLocalScaleMin  = _controlledTransformOriginalScale.x;
     _releasingLocalScaleMax = 0;
     _controlledTransformTargetLocalScale = _controlledTransformOriginalScale;
 }
Exemplo n.º 2
0
    private void SquashyStateTransition()
    {
        switch (_curSquashyState)
        {
        case SquashyState.Idle:
            if (ControlledTransform.localScale.x < _pressingThreshFromIdle)
            {
                _curSquashyState = SquashyState.Pressing;
            }
            break;

        case SquashyState.Pressing:
            if (ControlledTransform.localScale.x >=
                _pressingLocalScaleMin + 0.1f * _controlledTransformOriginalScale.x)
            {
                _curSquashyState       = SquashyState.Releasing;
                _pressingLocalScaleMin = _controlledTransformOriginalScale.x;
            }
            else
            {
                _pressingLocalScaleMin = Mathf.Min(ControlledTransform.localScale.x, _pressingLocalScaleMin);
            }
            break;

        case SquashyState.Releasing:
            if (ControlledTransform.localScale.x <=
                _releasingLocalScaleMax - 0.1f * _controlledTransformOriginalScale.x)
            {
                _curSquashyState        = SquashyState.Pressing;
                _releasingLocalScaleMax = 0;
            }
            else if (ControlledTransform.localScale.x >
                     _controlledTransformOriginalScale.x - 0.00001f)
            {
                _curSquashyState        = SquashyState.Idle;
                _releasingLocalScaleMax = 0;
            }
            else
            {
                _releasingLocalScaleMax = Mathf.Max(ControlledTransform.localScale.x, _releasingLocalScaleMax);
            }
            break;
        }
    }