void Deselect() { if (selectedExplodee != null) { OnDeselect(selectedExplodee, selectedExplodee.transform); selectedExplodee.Deselect(); selectedExplodee = null; } }
// Update is called once per frame void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Input.GetMouseButtonDown(0)) { RaycastHit hit; if (Physics.Raycast(ray, out hit)) { Explodee clickedExplodee = hit.transform.GetComponentInParent <Explodee>(); if (clickedExplodee != null) { if (!clickedExplodee.selected) { if (selectedExplodee != null) { Deselect(); } Select(clickedExplodee); } else { Deselect(); } } else { Deselect(); } } else { Deselect(); } } if (selectedExplodee != null) { //Debug.Log(selectedExplodee.name + " moving. offset: " + selectedExplodee.meshOffset + ", should be " + (Camera.main.transform.position + holdDistance * ray.direction - selectedExplodee.meshOffset) + ", actual " + selectedExplodee.transform.position); selectedExplodee.transform.position = Camera.main.transform.position + holdDistance * ray.direction - selectedExplodee.meshOffset; } }
void Select(Explodee clickedExplodee) { clickedExplodee.Select(); selectedExplodee = clickedExplodee; }
void Reposition(Explodee explodee, Transform explodeeTransform) { explodeeTransform.position = explodee.startPosition - explodee.meshOffset + explodee.explodeDirection * explodeAmount * explodee.distance; }