- Home /
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, Vector3.zero, 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
Answer by Peter G · Apr 28, 2011 at 03:09 AM
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 Vector3.zero.
Its hard to tell exactly what your trying to do. You can send a ray out from the origin in the direction:
Physics.Raycast(Vector3.zero, 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.
thanks Peter, it's not completely spherical, an uneven mesh. So that's the reason for raycasting. The problem is I want the ray origin to be randomly from a large sphere (surrounding my mesh) towards the center Vector3.zero but I can't seem to work it out.
Your answer
Follow this Question
Related Questions
Checking if object intersects? 1 Answer
Instantiate Prefabs on sphere surface(mini planet) 1 Answer
Instantiate a Prefab along the surface of another GameObject (Sphere) 1 Answer
Object spawning at incorrect Y value. 1 Answer
Instantiated an Prefab on a Spherical Object at mouse cursor position 3 Answers