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; }