Diskuze: C# Unity - Pohybování s kamerou
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 27 zpráv z 27.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
prostě klasicky jak máš příklad Minecraft WASD + rotace myší
Tak na to má Unity vlastní asset Characters a tam first person character. Pokud již máš projekt dej Assets->Import package -> Characters. A pak si to najdeš ve složkách a vložíš z Prefabs buď FPSController a nebo RigidBodyFPSController dle potřeby. FPSController obsahuje i zvuky a další vychytávky.
Vše je v dokumentaci
Kamera :
public float sensitivityX = 15F;
public float sensitivityY = 15F;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -60F;
public float maximumY = 60F;
float rotationY = 0F;
float rotationX = 0F;
public GameObject Player;
void Update()
{
rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);
transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
}
Pohyb :
public float speed = 6.0F;
public float jumpSpeed = 8.0F;
public float gravity = 20.0F;
private Vector3 moveDirection = Vector3.zero;
void Update() {
CharacterController controller = GetComponent<CharacterController>();
if (controller.isGrounded) {
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton("Jump"))
moveDirection.y = jumpSpeed;
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
to asi není ono..
Potřebuju něco takového:
https://www.youtube.com/watch?…
Však to je přesně ono . Jen si to musíš upravit, to snad zvládneš, ne?
Mám tento kód
ale nefunguje nebo neumím mačkat šipky ale do debug konzole to píše 3 nebo
4 takže mačkám dobře
if (Input.GetKey(KeyCode.RightArrow))
{
Debug.Log("3");
this.speed2 = 0.4f;
this.MainCamera.transform.RotateAround(this.MainCamera.transform.position, Vector3.up, Input.GetAxis("Horizontal") * this.speed2);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
Debug.Log("4");
this.speed2 = -0.4f;
this.MainCamera.transform.RotateAround(this.MainCamera.transform.position, Vector3.up, Input.GetAxis("Horizontal") * -this.speed2);
}
Máš to v metodě Update() ??
BTW: chtěl jsi ovládání kamery ne? proč tam máš .RotateAround ?
No mám trochu jinak ty skripty.. pohyb s kamerou rovně a dozadu funguje ale právě teď musím vyřešit pohyb s kamerou a teď si vlastně uvědomuju, že když budu mít rotaci doprava a doleva nebudu moci pohybovat kamerou nahoru..
Jinak mám to v metodě Update
Aha už mi to funguje.. Ale teď mám problém s létáním nahoru a dolů a doprava a doleva
pohyb s kamerou rovně a dozadu funguje ale právě teď musím vyřešit pohyb s kamerou a teď si vlastně uvědomuju, že když budu mít rotaci doprava a doleva nebudu moci pohybovat kamerou nahoru
?? tak tohle nechápu asi už jsem přepracovaný,
Jestli chceš můžu ti to ukázat přes teamviewer či skype.. Co je
špatně..
skype: tomasekpro
musíš tedy počkat do odpoledne, cca do 5ti, snad na to nezapomenu
Mě by spíš zajímalo jestli se dá Blend Tree s animacema upravit tak, aby nohy postavy stály na místě a otočili se cca o 45° až ve chvílí kdy se kamera otočí o 45° a více. Chci docílit efektu jako je v CounterStrike GO, kde postava stojí na místě a pohybuje se jen horní část těla, ve chvíli když se vršek otočí moc, nohy ho jakoby doběhnou na stejný úhel.. Ale asi to budu muset řešit jinak než přes blend tree a budu muset využít rozdělení modelu na upper a lower části.
Haha Nejvtipnější na tom je že to je pravda. Ale šprcka za letu ? Koho tohle může napadnout. Ještě vtipnější než že je to pravda je že je to velice trefné.
Zrovna nedávno jsem hrál kompetetivní zápas s přateli a když jsem vyběhl do jedné uličky tak jedna čubka vyskočila (bunnyhop) a letěla cca 3 herní metry a měnila směr a rotaci doslova jako ta šprcka, ale nakonec jsem ji udolal. No co dodat, přešel jsem z CSGO na Escape From Tarkov, které se drží reality a žádní levitující nepřátelé tam nejsou
Bohužel to není jediná věc která je v CSku odfláknutá.
další věccí je pozice FPS kamery vůči postavě kterou vidí ostatní
hráči.
Doslova je kamera pozicovaná ne na úrovni očí ale doslova na hlavě (jako
položená) takže když se někdo schová za překážku celej tak ty mu
vidíš jen kousíček hlavy (kdyby to byl žid, viděl by jsi jen jarmulku),
ale on tě vidí celého a v klidu po tobě střílí.
A o synchronizaci colliderů na postavách nebo synchronizaci ragdollu postav
ani nemluvím
To je přesně důvod proč (téměř chronicky) nenávidím MMO nebo MOBA. Kvůli neustálím aktualizacím obecně odflakují beta-testing a vydají aktualizace plné chyb. Například vývojáři Team Fortress 2 veřejně přiznaly že v každé verzi mají značné množství úmyslných bugů, Argumentovaly to tím že to musí dělat jinak by nemusely dělat další verze a přišly by o práce (osobně si myslím že je to blbost. Projektů bude vždy dost). League of legends a DOTA jsou na tom úplně stejně. Co se týče FPS tak online multiplayer moc nemusím... Z bezpečnostního hlediska mně znepokojuje že ve svém počítači vidím někoho koho neznám, někoho kdo mi klidně může prohrabávat složky mezitím co hrajeme. Na druhou stranu LAN se mi zdá v pořádku jelikož si do sítě nepustíš někoho koho neznáš. Kromě toho FPS bývají velice nevyvážená, všude moc granátometů.
Například vývojáři Team Fortress 2 veřejně přiznaly že v každé verzi mají značné množství úmyslných bugů, Argumentovaly to tím že to musí dělat jinak by nemusely dělat další verze a přišly by o práce
Zdroj?
Zní to jako čistej HOAX
Co se týče FPS tak online multiplayer moc nemusím... Z bezpečnostního hlediska mně znepokojuje že ve svém počítači vidím někoho koho neznám, někoho kdo mi klidně může prohrabávat složky mezitím co hrajeme.
Uh, cože? Tohle jsem vůbec nepochopil
Zobrazeno 27 zpráv z 27.