public override void StartAction() { Body body = Utillites.GetBodyFromPosition(Input.mousePosition); if (body != null) { source = body; action = true; } }
public override void StopAction() { if (source != null) { Body destination = Utillites.GetBodyFromPosition(Input.mousePosition); if (destination != null && destination != source) { float restLength = distanceLength ? (source.position - destination.position).magnitude : springLength; Create(source, destination, restLength, springK); } } source = null; action = false; }
void Update() { Body body = Utillites.GetBodyFromPosition(Input.mousePosition); if (body != null || selectedBody != null) { if (selectedBody) { body = selectedBody; } spriteRenderer.enabled = true; transform.position = body.position; transform.rotation = Quaternion.AngleAxis(Time.time * 90, Vector3.forward); transform.localScale = Vector2.one * body.shape.size * 1.2f; } else { spriteRenderer.enabled = false; } if (selectedBody) { if (selectedBody.type == Body.eType.Static) { Vector2 position = Camera.main.ScreenToWorldPoint(Input.mousePosition); selectedBody.position = position; } if (selectedBody.type == Body.eType.Kinematic || selectedBody.type == Body.eType.Dynamic) { Vector2 position = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector2 force = Utillites.SpringForce(position, selectedBody.position, 0, 5); selectedBody.AddForce(force, Body.eForceMode.Velocity); } } }
public override void StartAction() { selectedBody = Utillites.GetBodyFromPosition(Input.mousePosition); }