/*
Объектом является - сфера!!!
Суть проблемы в том, что при ускорение объекта через Акселератион, сфера через некоторое время начинает подыматься в вверх. При попытке подпрыгнуть не используя обратный импульс сфера находится в воздухе дольше чем нужно, а при задании обратного импульса весь этот прыжок выглядит ужасно не естественно. Пожалуйста помогите что лучше использовать,?
*/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BallController : MonoBehaviour {
public float speed;
public float fast;
float LR;
Vector3 coordinats;
public float magnitude;
public Rigidbody RB;
public float jump;
public bool ground;
public float speed_ball;
private void FixedUpdate()
{
Ray ray = new Ray(RB.transform.position, Vector3.down);
RaycastHit rh;
if (Physics.Raycast(ray, out rh, 0.8f))
{
ground = true;
}
else
{
ground = false;
}
if ((Input.touchCount > 0) && (ground == true))
{
//RB.AddForce(Vector3.zero);
RB.AddForce(Vector3.up * jump, ForceMode.Impulse); // прыжок вверх
//RB.useGravity = true;
}
if ((ground == false) && RB.transform.position.y > 1f)
{
//RB.AddForce(Vector3.zero);
RB.AddForce(-Vector3.up * jump, ForceMode.Impulse); // даю объекту обратный импульс
}
/////////
GetComponent<Rigidbody>().AddForce(Vector3.forward * fast, ForceMode.Acceleration);
coordinats = Input.acceleration; // сохраняет данные акселерометра в переменную
if (coordinats.sqrMagnitude > magnitude)
{
coordinats.Normalize();
}
//coordinats.Normalize();
if (coordinats.x > 0.1f)
{LR = 0.15f; transform.Translate(new Vector3(LR * speed * Time.deltaTime, 0, 0));} // поворачивает вправо
if (coordinats.x < -0.1f)
{ LR = -0.15f; transform.Translate(new Vector3(LR * speed * Time.deltaTime, 0, 0)); } // поворачивает влево
}
private void Start()
{
RB = GetComponent<Rigidbody>();
RB.AddForce(Vector3.forward * 10f, ForceMode.Impulse); // дает толчок шарику при старте
}
}