GameObject CreateChessPieceRepresentationObject(ChessPiece piece) { GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube); obj.name = piece.agent.name + " " + piece.Type.ToString(); obj.transform.position = RepresentationMapping.MapBoardPos2D(piece.pos); obj.transform.localScale = Vector3.one * 0.7f; obj.GetComponent <MeshRenderer>().material.color = piece.agent.color; GameObject head = GameObject.CreatePrimitive(PrimitiveType.Sphere); head.transform.position = RepresentationMapping.MapBoardPos2D(piece.pos) + Vector3.up * 0.3f; head.transform.localScale = Vector3.one * 0.5f; head.GetComponent <MeshRenderer>().material.color = ColorFromPieceType(piece.Type); head.transform.SetParent(obj.transform); Destroy(head.GetComponent <SphereCollider>()); ChessPieceRepresentation cpr = obj.AddComponent <ChessPieceRepresentation>(); cpr.chessPiece = piece; representationObjects.Add(cpr); return(obj); }
void Update() { var ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { var obj = hit.transform.gameObject; ChessPieceRepresentation cpr = obj.GetComponent <ChessPieceRepresentation>(); if (cpr != null) { cpr.OnHover(); if (Input.GetMouseButtonDown(0) && !mouseDown) { mouseDown = true; cpr.OnClicked(); } } } if (Input.GetMouseButtonUp(0)) { mouseDown = false; } }