- Home /
Object slope rotation issue
Hi I have a script that rotates the object based on the slope of the ground but the last function of "transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);" is preventing it from rotating on the y axis from left to right but if it's taken out the rotation of the object doesn't work with the slope. I was wondering is there an alternative that could be used so both left right and slope rotation would work?
Thanks
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FakeGravity : MonoBehaviour
{
public float Thrust = 1;
public float Gravity = 9.18f;
private Rigidbody _rigidbody;
// Use this for initialization
void Start()
{
_rigidbody = gameObject.GetComponent<Rigidbody>();
}
// Update is called once per frame
void FixedUpdate()
{
float v = Input.GetAxis("Vertical");
float h = Input.GetAxis("Horizontal");
transform.Rotate(Vector3.up * h * Thrust);
transform.Translate(Vector3.forward * v * Thrust);
RaycastHit hit;
Ray ray = new Ray(transform.position, -transform.up);
if (Physics.Raycast(ray, out hit, Mathf.Infinity))
{
Debug.DrawRay(ray.origin, hit.normal * 100, Color.blue);
Debug.Log(hit.transform.name);
var gravityAcc = (hit.point - transform.position) * Gravity;
_rigidbody.AddForce(gravityAcc, ForceMode.Acceleration);
}
if (Physics.Raycast(ray, out hit, 100))
{
Debug.DrawRay(hit.point, hit.normal * 100, Color.blue);
Debug.DrawRay(hit.point, hit.normal * 100, Color.green);
transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
}
}
}
Your answer
Follow this Question
Related Questions
Child transforms screwed up by parent's rotations 1 Answer
How do i rotate an object around an arbitrary axis in 3D? 0 Answers
Rigidbody.AddForce with Raycast? 1 Answer
Have An Object Rotate Around Transform A So That Transform B is Looking at Transform C (C#) 0 Answers
Problem with rigidbodies and rotation with quaternion 1 Answer