Пример #1
0
 /// <summary>
 /// Use this for initialization
 /// </summary>
 void Start()
 {
     lb     = new LinearBounce(GetComponent <Rigidbody2D>(), this);
     Speed *= 1 / Mass;
     lb.SetSpeed(Speed);
     lb.Force.mass = Mass;
     AfterStart();
 }
Пример #2
0
        public void NotifyCollided()
        {
            var angle         = LinearBounce.ToBounceAngle(lb.Force.velocity);
            var absAngle      = Math.Abs(angle);
            var startAngleFix = Math.Abs(StartAngle) > 0;
            var needFix       = Math.Abs(absAngle % 45) < Tolerance || startAngleFix;

            if (needFix)
            {
                //Debug.Log($"Collision angle: {absAngle}");

                if (startAngleFix)
                {
                    lb.AdditionAngle = StartAngle;
                    lb.FixReflectionAngleCollision();
                    lb.Update();
                    StartAngle = 0;
                }
                else
                {
                    collisions++;

                    if (collisions >= Bounces)
                    {
                        //Debug.Log($"Collision {Bounces}");
                        angle            = Fix(angle);
                        lb.AdditionAngle = angle;
                        collisions       = 0;
                    }
                }
            }
            else
            {
                collisions = 0;
            }
        }
Пример #3
0
 public BouncingFix(LinearBounce linearBounce)
 {
     lb = linearBounce;
 }