Esempio n. 1
0
        protected override void Update()
        {
            base.Update();

            if (timer.IsFinished)
            {
                return;
            }

            var timeSlice = new TimeSlice(Time.deltaTime);

            timer.OnUpdate(timeSlice);

            if (timer.IsFinished)
            {
                // Stop receiving update events, animation is finished
                enabled = false;

                if (disableCollisions)
                {
                    multiCollider.Enabled = wasColliderEnabled;
                }
            }

            attributeAnimator.ApplyAttributeValueFor(startAlpha, endAlpha, interpolate.Transform(timer.Progress));
        }
        public void OnInputMove(InputAction.CallbackContext context)
        {
            if (null == node)
            {
                return;
            }

            // Don't use Node2D Velocity (it is constant). Use rigidbody velocity, which decays
            // This results in more fluid movement
            node.VelocityType = Node2D.MoveType.None;

            //Debug.Log("Input Move: " + context.ToString());

            var angleAxisLimiter = new AngleAxisLimiter2D(axisLimit);
            var rigidbody        = node.GetComponent <Rigidbody2D>();

            var axisVector = context.ReadValue <Vector2>();
            var angle      = AngleUtils.Vector2ToDegreeAngle(axisVector);
            var distance   = AngleUtils.Distance(Vector2.zero, axisVector);

            if (distance <= deadZone)
            {
                rigidbody.velocity = Vector2.zero;
                return;
            }

            var factor             = (distance - deadZone) / (1.0f - deadZone);
            var interpolatedFactor = interpolate.Transform(factor);
            var moveSpeed          = minMoveSpeed + ((maxMoveSpeed - minMoveSpeed) * interpolatedFactor);

            var limitedAngle = angleAxisLimiter.LimitAngle(angle);
            var velocity     = AngleUtils.DegreeAngleToVector2(limitedAngle, moveSpeed);

            rigidbody.velocity = velocity;
        }