private void Update() { forwardIsBlocked = false; Collider[] colliders = Physics.OverlapBox(transform.position + transform.forward + Vector3.up * 0.6f, Vector3.one * 0.25f, Quaternion.identity, colliderMask.value); forwardIsBlocked = colliders.Length > 0; box = null; foreach (Collider coll in colliders) { box = coll.gameObject.GetComponent <Rigidbody>(); if (box) { break; } } paintStain = null; colliders = Physics.OverlapBox(transform.position, Vector3.one * 0.25f, Quaternion.identity, paintMask.value); foreach (Collider coll in colliders) { paintStain = coll.gameObject.GetComponent <PaintStain>(); if (paintStain != null) { break; } } paintStainForward = null; colliders = Physics.OverlapBox(transform.position + transform.forward, Vector3.one * 0.25f, Quaternion.identity, paintMask.value); foreach (Collider coll in colliders) { paintStainForward = coll.gameObject.GetComponent <PaintStain>(); if (paintStainForward != null) { break; } } }
public override IEnumerator Execute(Robot robot) { Vector3 paintPos = robot.transform.position + robot.transform.forward; paintPos.y += 0.01f; yield return(new WaitForSeconds(0.5f)); if (robot.paintStainForward != null) { if (color != StatesColorType.None) { robot.paintStainForward.Paint(color); } else { GameObject.Destroy(robot.paintStainForward.gameObject); } } else { if (color != StatesColorType.None) { GameObject go = GameObject.Instantiate(Resources.Load <GameObject>("PaintStain"), paintPos, Quaternion.Euler(90, 0, 0)); PaintStain ps = go.GetComponent <PaintStain>(); ps.Paint(color); } } }