.[ ČeskéHry.cz ].
Unity 5 problem s fyzikou

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
sacmoo



Založen: 18. 11. 2014
Příspěvky: 69

PříspěvekZaslal: 1. březen 2016, 22:23:39    Předmět: Unity 5 problem s fyzikou Odpovědět s citátem

Snazim sa spravit efekt slow motion pri strielani a Time.timeScale = 0.1 a Time.fixedDeltaTime = 0.02f * 0.1
Ked vystrelim a nasledne spustim slow motion, tak projektil leti spomalene do dialky, ale ked je spustene slow motion a vystrelim, tak projektil ledva vystreli z hlavne a hned padne na zem. Vie niekto v com by mohol byt problem?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1525
Bydliště: Telč

PříspěvekZaslal: 2. březen 2016, 09:45:00    Předmět: Odpovědět s citátem

Co znamená "vystřelí"? Působíš na projektil silou? Pokud ano, bude to možná ten problém, protože při takovémto způsobu výstřelu se používá i čas - čas po který ta síla působí. To by samo o sobě nevadilo, ale pokud to máš udělané tak, že tu sílu používáš fixně třeba 1 nebo více framů, tak zkrátka přijdeš o nějakou tu energii. Na výstřel je nejlepší rovnou nastavit projektilu rychlost.

Snad jsem se trefil :-)
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
sacmoo



Založen: 18. 11. 2014
Příspěvky: 69

PříspěvekZaslal: 2. březen 2016, 19:08:30    Předmět: Odpovědět s citátem

Rychlost som si praveze definoval. Takto vyzera:

kód:

public class ShooterScript : MonoBehaviour
{
   public Rigidbody projectile;
   public float fireRate = 0.7f;
   public float projectileForce = 6000.0f;
   private float nFire = 0.0f;

   private void Start()
   {
      Cursor.visible = false;       
   }

   private void Update()
   {   
      if (Input.GetButton("Fire1") && Time.time > nFire)
      {
         nFire = Time.time + fireRate;
         Rigidbody clone = (Rigidbody) Instantiate(projectile,Camera.main.transform.position,Camera.main.transform.rotation);         
         clone.AddForce(clone.transform.forward * projectileForce);
      }
   }           
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1525
Bydliště: Telč

PříspěvekZaslal: 2. březen 2016, 21:27:45    Předmět: Odpovědět s citátem

To je přesně to, co sem psal. Používáš sílu, ale ta působí jen jeden frame a jeho čas ještě měníš slow motion efektem. Síla by byla dobrá tak pro nějaký ohromný samostříl nebo katapult. Ale musela by působit nějaký delší čas (třeba vteřinu) a ve fixedUpdate. Když máš ale lauf třeba metr dlouhý a rychlost projektilu třeba 100 m/s (dost pomalý), tak projektil stejně zrychlí od nábojnice ke konci laufu tak za jeden frame. Možná i dřív. Je proto špatné trápit se se zrychlením (je úměrné síle). Je to něco jako bys v autě dupl na plyn třeba na 0.02 sekundy. Raději rovnou nastav rychlost přes http://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html. A navzdory dokumentaci to bude realistický až až :-).
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1525
Bydliště: Telč

PříspěvekZaslal: 2. březen 2016, 21:33:36    Předmět: Odpovědět s citátem

... pokud se chceš držet sil, poděl tu sílu time scalem.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
sacmoo



Založen: 18. 11. 2014
Příspěvky: 69

PříspěvekZaslal: 3. březen 2016, 21:21:19    Předmět: Odpovědět s citátem

A mozes mi to napisat ako by to vyzeralo v kode? Lebo skusal som tam dat namiesto Update FixedUpdate a dal som tam clone.velocity, ale robi to este vacsie blbosti.
Ked som dal vo FixedUpdate
clone.velocity = clone.transform.forward * projectileForce * Time.fixedDeltaTime; tak sa nic nezmenilo.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1525
Bydliště: Telč

PříspěvekZaslal: 4. březen 2016, 11:14:43    Předmět: Odpovědět s citátem

clone.velocity = clone.transform.forward * projectileSpeed;

Bez síly, bez času. Prostě jen rychlost v metrech za sekundu. A nemusí to bejt ani v update, klidně někde v inputu, nebo jako událost. Prostě jen jednou jedinkrát nastavíš rychlost a projektil letí. Odporem se pak už jen zpomaluje.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
sacmoo



Založen: 18. 11. 2014
Příspěvky: 69

PříspěvekZaslal: 7. březen 2016, 16:07:00    Předmět: Odpovědět s citátem

Uz to funguje. Diky moc.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna