- Home /
Hover Effect with more rays as turbines?
Hello,
along time ago I found this script that creates a hover effect that works well with small objects (because the boundaries are nearer to center-pivot where the ray starts).
private var rb : Rigidbody;
private var currentHeight : float = 0.0;
private var hoverForceMultiplier : float = 0.0;
private var hoverForceApplied : Vector3 = Vector3(0, 0, 0);
function Start() {
rb = GetComponent.<Rigidbody>();
}
function FixedUpdate (){
// -- find hover distance and add force to make hover
var rayHit : RaycastHit;
if(Physics.Raycast(transform.position, Vector3.down, rayHit)){
currentHeight = rayHit.distance;
if (currentHeight < (hoverDistance - Time.deltaTime)){
// find percentage of currentHeight below hoverDistance
hoverForceMultiplier = (hoverDistance - currentHeight) / hoverDistance;
hoverForceApplied = (Vector3.up * hoverForce * hoverForceMultiplier) + (Vector3.up * 9.8);
rb.AddForce(hoverForceApplied);
} else {
// apply anti-gravity force for half distance above hoverDistance
if ((currentHeight - hoverDistance - Time.deltaTime) < (hoverDistance / 2)){
hoverForceApplied = (Vector3.up * 9.8) * ((hoverDistance - (currentHeight - hoverDistance)) / hoverDistance);
rb.AddForce(hoverForceApplied);
}
}
}
Debug.DrawLine(transform.position,Vector3(transform.position.x, transform.position.y-hoverDistance, transform.position.z), Color.green);
}
However, it is better to have multiple rays checking the distance to the ground as a hovercar has different amounts of turbines instead of having one ray starting from the center of the car.
I have thought about a ray-array variable in the inspector that creates a new ray with a position variable to place it in the right direction where the turbines are, but I don't know overall how to solve this.
Please, could someone point me in the right direction?
Thanks in advance!
Answer by Cherno · Jul 16, 2015 at 01:33 PM
You can use Rigidbody.AddForceAtPosition to... well, exactly what it says on the tin. Just cast four rays at the right positions and apply force depending on the distance to the hit.point.
Your answer
Follow this Question
Related Questions
Raycast stop at distance 3 Answers
Jittery Movement 3 Answers
RaycastHit Collider Question 1 Answer
Problems with sending multiple raycasts at once 1 Answer
use the raycast with the rotation 0 Answers