I would like to know why we don’t use ‘new’ for vector 2 in CalculateWorldPointOfMouseClick(). I know new is used to tell that we are creating a new instance of the object and as we are using vector3 struct/class, we must use new there. So why are we using new in SnapToGrid() but not in CalculateWorldPointOfMouseClick().
public Camera gameCamera;
public GameObject defendersParent;
void Start(){
defendersParent = GameObject.Find ("DefendersParent");
if (!defendersParent) {
defendersParent = new GameObject ("DefendersParent");
}
}
void OnMouseDown(){
GameObject newDefender = Instantiate(Button.selectedDefender,SnapToGrid(CalculateWorldPointOfMouseClick()),Quaternion.identity)
as GameObject;
newDefender.transform.parent = defendersParent.transform;
}
Vector2 SnapToGrid(Vector2 worldPos){
float newX = Mathf.RoundToInt (worldPos.x);
float newY = Mathf.RoundToInt (worldPos.y);
return new Vector2 (newX, newY);
}
Vector2 CalculateWorldPointOfMouseClick(){
float mousePositionX = Input.mousePosition.x;
float mousePositionY = Input.mousePosition.y;
float distanceFromCamera = 10.0f;
Vector3 worldCoordinates = new Vector3 (mousePositionX, mousePositionY, distanceFromCamera);
Vector2 worldPosition2D = gameCamera.ScreenToWorldPoint (worldCoordinates);
return worldPosition2D;
}
}