предположим, что есть дыра, которая способна захватить все объекты вокруг себя под действием собственной гравитации, сценарий работает нормально, но объекты не вращаются.
Я хочу, чтобы объекты двигались в положениепроделайте отверстие и дайте им крутящий момент, пока они движутся
. Вы можете использовать два куба, один из которых может быть отверстием, а другой - блоком с твердым телом и слоем коробки
, заранее спасибо. *
public class EatTheBoxes : MonoBehaviour
{
public bool Starttoeat;
public float distance,speed,Gizmo_hight,FollowSpeed;
public LayerMask layerint;
public ForceMode forcemode;
private int _numberoftile;
void FixedUpdate()
{
if (Starttoeat)
{
CatchTheBoxes(transform.position,distance,layerint);
}
}
void CatchTheBoxes(Vector3 center, float radius , LayerMask layerint)
{
Collider[] hitColliders = Physics.OverlapSphere(center, radius,layerint);
int i = 0;
while (i < hitColliders.Length)
{
Vector3 forceDirection = transform.position - hitColliders[i].transform.position;
if (hitColliders[i].CompareTag("bomb"))
{
hitColliders[i].GetComponent<Rigidbody>().AddForceAtPosition(Time.fixedTime * 20 * forceDirection.normalized,transform.position,forcemode);
hitColliders[i].GetComponent<Rigidbody>().isKinematic = false;
}
else
{
hitColliders[i].GetComponent<Rigidbody>().AddForceAtPosition(Time.fixedTime * speed * forceDirection.normalized,transform.position,forcemode);
hitColliders[i].GetComponent<Rigidbody>().isKinematic = false;
}
i++;
}
}
void OnDrawGizmos()
{
Vector3 newTransform = transform.position;
newTransform.y = newTransform.y + Gizmo_hight;
Gizmos.DrawWireSphere(newTransform,distance);
}
}