unity3d
Kollision
Sök…
colliders
Box Collider
En primitiv Collider formad som en cuboid.
Egenskaper
Är Trigger - Om kryssat kommer Box Collider att ignorera fysik och bli en Trigger Collider
Material - En referens, om det specificeras, till Box Collider's fysikmaterial
Center - The Box Colliders centrala position i det lokala rymden
Storlek - Storleken på Box Collider uppmätt i lokalt utrymme
Exempel
// Add a Box Collider to the current GameObject.
BoxCollider myBC = BoxCollider)myGameObject.gameObject.AddComponent(typeof(BoxCollider));
// Make the Box Collider into a Trigger Collider.
myBC.isTrigger= true;
// Set the center of the Box Collider to the center of the GameObject.
myBC.center = Vector3.zero;
// Make the Box Collider twice as large.
myBC.size = 2;
Sphere Collider
En primitiv Collider formad som en sfär.
Egenskaper
Är Trigger - Om markerad kommer Sphere Collider att ignorera fysik och bli en Trigger Collider
Material - En referens, om specificerad, till fysikmaterialet i Sphere Collider
Center - The Sphere Colliders centrala position i det lokala rymden
Radius - Radien för Collider
Exempel
// Add a Sphere Collider to the current GameObject.
SphereCollider mySC = SphereCollider)myGameObject.gameObject.AddComponent(typeof(SphereCollider));
// Make the Sphere Collider into a Trigger Collider.
mySC.isTrigger= true;
// Set the center of the Sphere Collider to the center of the GameObject.
mySC.center = Vector3.zero;
// Make the Sphere Collider twice as large.
mySC.radius = 2;
Capsule Collider
Två halva sfärer förenade av en cylinder.
Egenskaper
Är Trigger - Om det är markerat kommer Capsule Collider att ignorera fysik och bli en Trigger Collider
Material - En referens, om specificerad, till fysikmaterialet i Capsule Collider
Center - The Capsule Colliders centrala position i det lokala rymden
Radius - Radien i det lokala rymden
Höjd - Colliderens totala höjd
Riktning - orienteringsaxeln i det lokala rymden
Exempel
// Add a Capsule Collider to the current GameObject.
CapsuleCollider myCC = CapsuleCollider)myGameObject.gameObject.AddComponent(typeof(CapsuleCollider));
// Make the Capsule Collider into a Trigger Collider.
myCC.isTrigger= true;
// Set the center of the Capsule Collider to the center of the GameObject.
myCC.center = Vector3.zero;
// Make the Sphere Collider twice as tall.
myCC.height= 2;
// Make the Sphere Collider twice as wide.
myCC.radius= 2;
// Set the axis of lengthwise orientation to the X axis.
myCC.direction = 0;
// Set the axis of lengthwise orientation to the Y axis.
myCC.direction = 1;
// Set the axis of lengthwise orientation to the Y axis.
myCC.direction = 2;
Wheel Collider
Egenskaper
Massa - Massan av Wheel Collider
Radius - Radien i det lokala rymden
Hjuldämpningshastighet - Dämpningsvärde för Wheel Collider
Fjädringsavstånd - Maximal förlängning längs Y-axeln i det lokala rymden
Tvinga app-punktavstånd - Den punkt där krafter kommer att appliceras,
Center - Center of the Wheel Collider i lokala rymden
Fjädring
Spring - hastigheten med vilken hjulet försöker återgå till målpositionen
Spjäll - Ett större värde dämpar hastigheten mer och upphängningen rör sig långsammare
Målposition - standard är 0,5, vid 0 är upphängningen botten ut, vid 1 är den i full utsträckning
Friktion framåt / i sidled - hur däcket fungerar när du rullar framåt eller i sidled
Exempel
Mesh Collider
En Collider baserad på en Mesh Asset.
Egenskaper
Är Trigger - Om kryssat kommer Box Collider att ignorera fysik och bli en Trigger Collider
Material - En referens, om specificerad, till fysikmaterialet i Box Collider
Mesh - En referens till det nät som Collider bygger på
Konvex - konvexa nätkolliderare är begränsade till 255 polygoner - om den är aktiverad kan denna Collider kollidera med andra nätkolliderare
Exempel
Om du använder mer än en Collider på ett GameObject, kallar vi det en Compound Collider.
Wheel Collider
Hjulkollideraren inuti enheten bygger på Nvidias PhysX hjulkolliderare och delar därför många liknande egenskaper. Teknisk enhet är ett "enhetslöst" program, men för att allt ska vara meningsfullt krävs vissa standardenheter.
Grundläggande egenskaper
- Massa - hjulets vikt i kilogram, detta används för hjulmoment och ögonblicket för interia vid snurrning.
- Radie - i meter, radien för collideren.
- Dämpningsfrekvens för hjul - Justerar hur "lyhörda" hjulen är på det applicerade momentet.
- Fjädringsavstånd - Totalt köravstånd i meter som hjulet kan röra sig
- Force App Point Distance - var är kraften från upphängningen applicerad på den föräldra styvkroppen
- Center - Hjulets mittposition
Inställningar för upphängning
- Spring - Detta är vårkonstanten, K, i Newton / meter i ekvationen:
Kraft = Vårkonstant * Avstånd
En bra utgångspunkt för detta värde bör vara den totala massan på ditt fordon, dividerat med antalet hjul, multiplicerat med ett tal mellan 50 till 100. T.ex. om du har en 2 000 kg bil med 4 hjul, måste varje hjul behöva stöd 500 kg. Multiplicera detta med 75, och din fjäderkonstant bör vara 37 500 Newton / meter.
- Spjäll - motsvarande en stötdämpare i en bil. Högre räntor gör spänningen "styvare" och lägre räntor gör den "mjukare" och mer trolig att svänga.
Jag känner inte till enheterna eller ekvationen för detta, jag tror att det har att göra med en frekvensekvation i fysiken.
Sidleds friktionsinställningar
Friktionskurvan i enhet har ett slirvärde bestämt av hur mycket hjulet glider (i m / s) från önskat läge jämfört med det faktiska läget.
Extremum Slip - Det här är det maximala beloppet (i m / s) som ett hjul kan glida innan det tappar dragkraft
Extremumvärde - Detta är den maximala mängden friktion som ska appliceras på ett hjul.
Värdena för Exrtremum Slip bör vara mellan 2 och 2 m / s för de flesta realistiska bilar. 2 m / s är cirka 6 fot per sekund eller 5 mph, vilket är en hel del glid. Om du känner att ditt fordon måste ha ett värde högre än 2 m / s för glidning, bör du överväga att öka maxfriktion (Extremum Value).
Max Fraktion (Extremum Value) är friktionskoefficienten i ekvationen:
Friktionskraft (i newton) = Friktionskoefficient * Nedåtkraft (i newton)
Detta innebär att med en koefficient på 1 tillämpar du hela kraften i bilen + fjädring mittemot glidriktningen. I verkliga applikationer är värden högre än 1 sällsynta, men inte omöjliga. För ett däck på torr asfalt är värden mellan 0,7 och 0,9 realistiska, så standard är 1,0 att föredra.
Detta värde bör inte realistiskt inte överstiga 2,5, eftersom konstigt beteende börjar uppstå. Till exempel börjar du sväng höger, men eftersom detta värde är så högt appliceras en stor kraft mittemot din riktning, och du börjar glida in i svängen istället för bort.
Om du har maxat båda värdena bör du sedan börja höja asymptot-glidningen och värdet. Asymptot Slip bör ligga mellan .5 och 2 m / s och definierar friktionskoefficienten för eventuellt glidvärde förbi Asymptote-slipen. Om du tycker att dina fordon beter sig tills den bryter dragkraft, då den fungerar som om den är på is, bör du höja Asymptote-värdet. Om du upptäcker att ditt fordon inte kan driva, bör du sänka värdet.
Framåt friktion
Friktion framåt är identisk med friktion i sidled, med undantag för att detta definierar hur mycket draghjulet har i rörelseriktningen. Om värdena är för låga gör dina fordon utbrändhet och snurrar bara däcken innan du går framåt, långsamt. Om det är för högt kan ditt fordon ha en tendens att försöka göra en liten, eller värre, vändning.
Ytterligare anmärkningar
Förvänta dig inte att kunna skapa en GTA-klon eller annan racingklon genom att helt enkelt justera dessa värden. I de flesta körspel ändras dessa värden ständigt i skriptet för olika hastigheter, terrängen och vridvärden. Om du bara tillämpar ett konstant vridmoment på hjulcolliderna när du trycker på en knapp, kommer ditt spel inte att uppträda realistiskt. I den verkliga världen har bilar momentkurvor och växellådor för att ändra vridmomentet på hjulen.
För bästa resultat bör du ställa in dessa värden tills du får en bil som svarar ganska bra och sedan göra ändringar i hjulmoment, max vridvinkel och friktionsvärden i skriptet.
Mer information om hjulkolliderare finns i Nvidias dokumentation: http://docs.nvidia.com/gameworks/content/gameworkslibrary/physx/guide/Manual/Vehicles.html
Trigger Colliders
metoder
-
OnTriggerEnter()
-
OnTriggerStay()
-
OnTriggerExit()
Du kan göra en Collider till en Trigger för att använda OnTriggerEnter()
, OnTriggerStay()
och OnTriggerExit()
. En Trigger Collider reagerar inte fysiskt på kollisioner, andra GameObjects passerar helt enkelt igenom den. De är användbara för att upptäcka när ett annat GameObject befinner sig i ett visst område eller inte, till exempel när vi samlar in ett objekt kan vi kanske bara köra igenom det men upptäcka när detta händer.
Trigger Collider-skript
Exempel
Metoden nedan är ett exempel på en trigger-lyssnare som upptäcker när en annan collider kommer in i en GameObject (t.ex. en spelare). Trigger-metoder kan läggas till i alla skript som tilldelas ett GameObject.
void OnTriggerEnter(Collider other)
{
//Check collider for specific properties (Such as tag=item or has component=item)
}