Итак, в Unity 3D я столкнулся с использованием контроллера персонажа, чтобы вращать игровой объект игрока с помощью системы 3D-гравитации, которую я использую.вот сценарии:
using System.Collections;
using UnityEngine;
[RequireComponent (typeof (Rigidbody))]
public class GravityBody : MonoBehaviour {
public GravityAttractor attractor;
private Transform myTransform;
void Start () {
GetComponent<Rigidbody> ().useGravity = false;
GetComponent<Rigidbody> ().constraints =
RigidbodyConstraints.FreezeRotation;
myTransform = transform;
}
void FixedUpdate () {
if (attractor) {
attractor.Attract (myTransform);
}
}
void OnTriggerEnter (Collider col) {
GravityAttractor obj = col.GetComponent ("GravityAttractor") as
GravityAttractor;
if (obj) {
attractor = obj;
}
}
void OnTriggerExit (Collider col) {
attractor = null;
}
}
и:
using System.Collections;
using UnityEngine;
public class GravityAttractor : MonoBehaviour {
public float gravity = 0;
public float rotationSmoothness = 5f;
public float density = 5.52f;
private float volume;
public void Start () {
if (gravity == 0) {
if (GetComponent<Collider> ().GetType () == typeof (SphereCollider)) {
volume = (GetComponent<Collider> ().bounds.size.x * Mathf.PI) / 6;
} else if (GetComponent<Collider> ().GetType () == typeof (CapsuleCollider)) {
volume = ((Mathf.PI * GetComponent<Collider> ().bounds.size.x * GetComponent<Collider> ().bounds.size.y) * GetComponent<Collider> ().bounds.size.z) / 4;
} else {
volume = GetComponent<Collider> ().bounds.size.x * GetComponent<Collider> ().bounds.size.y * GetComponent<Collider> ().bounds.size.z;
}
gravity = -((density / 10) * volume) / 2;
}
}
public void Attract (Transform body) {
Vector3 gravityUp = (body.position - transform.position).normalized;
Vector3 localUp = body.up;
body.GetComponent<Rigidbody> ().AddForce (gravityUp * gravity);
Quaternion targetRotation = Quaternion.FromToRotation (localUp, gravityUp) * body.rotation;
body.rotation = Quaternion.Slerp (body.rotation, targetRotation, rotationSmoothness * Time.deltaTime);
}
}
проблема в том, что всякий раз, когда я пытаюсь добавить в стандартное единство, возникают проблемы с контроллером третьего лица, когда персонаж пытается вращаться как показано в этом видео
Если кто-нибудь знает, что делать, я был бы признателен за любую помощь.(я использую самую последнюю версию Unity)