Instantiate on the surface of a sphere using Physics.Raycast

var fissure : GameObject;
var hit : RaycastHit;
var angle : float = 360;

function Start() {
    while (true) {
        Invoke("spawnFissures", 1);
        var n = globalCountNew.overallScore / 100;
        var timetonext = 20 - n; 
        yield WaitForSeconds(Random.Range(0, timetonext));

function spawnFissures() {
    var ray : Vector3 = Random.onUnitSphere * 100;
    var hit : RaycastHit;
    if (Physics.Raycast (ray,, hit, 1000) && hit.collider.gameObject.CompareTag("Ground")){
        var position = hit.point;
        var fissurePrefs = Instantiate(fissure, position, Quaternion.identity);
        fissurePrefs.transform.eulerAngles.y = Random.Range(0, 360);

I'm failing to get any results with my attempted.

any ideas - Cheers C

Raycasting is defined by a point and a direction i.e `Physics.Raycast(startingPoint, directionToTravel, ... )`. You seem to be trying to give it 2 points. Because you have the direction set to

Its hard to tell exactly what your trying to do. You can send a ray out from the origin in the direction:

Physics.Raycast(, ray, ...)

but some colliders have normals and you won't get a collision if you shoot the ray from inside the object. In that case, shoot from the point back into the origin:

 Physics.Raycast(ray, -ray, ...)

or if your "planet" is a sphere, then why raycast at all. Just get a random point on the sphere as you did above, then use that as your instantiation point.