Unity3d: как применить вихревую силу к объектам? - PullRequest
0 голосов
/ 12 ноября 2018

Я бы хотел смоделировать вихревую силу для "группы" объектов в моей сцене.

Как я могу это сделать в Unity?

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Если вы используете физическую систему, то здесь есть две части.Применяя вихревую силу, и получая приятный закрученный эффект.Чтобы применить вихревую силу, вы можете просто зациклить жесткие тела и применить силу.Чтобы завихрение выглядело как настоящий вихревой вихрь, вам нужно запустить объекты с тангенциальной скоростью, которую вы можете определить с помощью векторного перекрестного произведения.

public float VortexStrength = 1000f;

public float SwirlStrength = 5f;

void Start () {
    foreach(GameObject g in RigidBodies){
        //to get them nice and swirly, use the perpendicular to the direction to the vortex
        Vector3 direction = Vortex.transform.position - g.transform.position;
        var tangent = Vector3.Cross(direction, Vector3.up).normalized * SwirlStrength;
        g.GetComponent<Rigidbody>().velocity = tangent;
    }
}

void Update(){
    //apply the vortex force
    foreach(GameObject g in RigidBodies){
        //force them toward the center
        Vector3 direction = Vortex.transform.position - g.transform.position;
        g.GetComponent<Rigidbody>().AddForce(direction.normalized * Time.deltaTime * VortexStrength);
    }
}
0 голосов
/ 12 ноября 2018

Круговое движение:

 float angle =0;
 float speed=(2*Mathf.PI)/5 //2*PI in degress is 360, so you get 5 seconds to complete a circle
 float radius=5;
 void Update()
 {
     angle += speed*Time.deltaTime; //if you want to switch direction, use -= instead of +=
     x = Mathf.Cos(angle)*radius;
     y = Mathf.Sin(angle)*radius;
 }

, где центр вашего круга является центром вашего вихря.

Конечно:

  • Если вам нужно несколько объектов с разным расстоянием от вихря
    центр вы должны играть с вашей переменной радиуса (я бы добавил
    Random.Range (minDistance, maxDistance))

  • Если вам нужны разные скорости, вы можете рандомизировать / изменять скорость.

  • Рандомизируйте / измените ваш х / у, если вы не хотите идеальный круг

Надеюсь, я был достаточно ясен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...