/// <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(); }
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; } }
public BouncingFix(LinearBounce linearBounce) { lb = linearBounce; }