ПредишенСледващото

Здравейте отново. Това е втората част на статията за движението на героя в Unity3D. Това отново ще бъде урок например. Тук ние считаме, движението на платформа. Но сега, без анимация. За това може да се намери в предишна статия. и в същото движение, описан в трето лице. така. Няма да има малко по-лесно, но скока ние сега няма да позволи на позицията. Сега ще дам един ритник в задника характер импулс абсолютно твърдо тяло тласък към физическото тяло. Продължи. (Разбира се sozaom скрипт Move. За създаване на сцена, където всичко ще се случи, можете да прочетете и на предишния урок отново)
За да започнете да се свързват със скрипт изисква компонент. Над клас напишете "[RequireComponent (typeof (абсолютно твърдо тяло))]".


използване UnityEngine;
използване System.Collections;

[RequireComponent (typeof (абсолютно твърдо тяло))]
обществен Move клас. MonoBehaviour <
>


Тук. Сега декларират променливи. Играч, скоростта си rigidbodi, скорост скок, булеви променливи (проверете скок), а самата платформа, която, когато той земи ще бъдат изправени пред един играч (в инспектора, уточни, нали?).


обществен GameObject Player;
обществен абсолютно твърдо тяло ThisRigidpody;
публичен скорост Int = 5;
обществен инт JumpSpeed ​​= 8;
обществен скокове булев;
Платформа обществен GameObject;


В началото на играча и възлага на променливите компоненти rigidbodi на мястото, където сценария виси.


анулира Start () <
Player = (GameObject) this.gameObject;
ThisRigidpody = (абсолютно твърдо тяло) this.rigidbody;
>


Сега ще, да се движат наляво и надясно, за да добавите тази позиция. Но тогава там всичко зависи от това, какви са настройките на плейъра (имам играч - Cylinder). Аз изглежда отстрани, така че той се разхождаше по стените, трябва да се събира и изважда на forward'u. Направете в "нищожен Обновяване ()".


ако (Input.GetKey (KeyCode.A) || Input.GetKey (KeyCode.LeftArrow))
<
Player.transform.position + = Player.transform.forward * скорост * Time.deltaTime;
>
ако (Input.GetKey (KeyCode.D) || Input.GetKey (KeyCode.RightArrow))
<
Player.transform.position - = Player.transform.forward * скорост * Time.deltaTime;
>


И така Ние всички разходки. Сега, за да направи скок. Ние трябва само да ни даде тласък Player rigidbodi. Ето как: "ThisRigidpody.AddForce (Player.transform.up * JumpSpeed, ForceMode.Impulse);".
Сега нека да пишат на състоянието.


ако (Input.GetKeyDown (KeyCode.W) || Input.GetKeyDown (KeyCode.UpArrow))
<
ако (скокове == невярно)
<
Скокове = вярно;
ThisRigidpody.AddForce (Player.transform.up * JumpSpeed, ForceMode.Impulse);
>
>


Ние проверяваме дали булеви променливи "Jumping = неверни", а след това може да скочи. Това означава, че импулсът е приложен към физическото тяло.
Сега, нека всичко да завърши в шах булева променлива. Създаване на нов метод. "Отпада OnCollisionEnter (Collision Колис)".


нищожен OnCollisionEnter (Collision Колис)
<
ако (collis.gameObject == платформа)
<
Скокове = фалшива;
>
>


В метода, ние проверяваме дали сблъсък, то той е платформа, на "Jumping = лъжата". Отново можете да скочи.
Добре. Както всичко.


използване UnityEngine;
използване System.Collections;

[RequireComponent (typeof (абсолютно твърдо тяло))]
обществен Move клас. MonoBehaviour <
обществен GameObject Player;
обществен абсолютно твърдо тяло ThisRigidpody;
публичен скорост Int = 5;
обществен инт JumpSpeed ​​= 8;
обществен скокове булев;
Платформа обществен GameObject;

анулира Start () <
Player = (GameObject) this.gameObject;
ThisRigidpody = (абсолютно твърдо тяло) this.rigidbody;
>
нищожен Обновяване (), ако (Input.GetKey (KeyCode.A) || Input.GetKey (KeyCode.LeftArrow))
<
Player.transform.position + = Player.transform.forward * скорост * Time.deltaTime;
>
ако (Input.GetKey (KeyCode.D) || Input.GetKey (KeyCode.RightArrow))
<
Player.transform.position - = Player.transform.forward * скорост * Time.deltaTime;
>
ако (Input.GetKeyDown (KeyCode.W) || Input.GetKeyDown (KeyCode.UpArrow))
<
ако (скокове == невярно)
<
Скокове = вярно;
ThisRigidpody.AddForce (Player.transform.up * JumpSpeed, ForceMode.Impulse);
>
>
>
нищожен OnCollisionEnter (Collision Колис)
<
ако (collis.gameObject == платформа)
<
Скокове = фалшива;
>
>
>

Може да се провери, да добавяте анимации и т.н.
Ето един пример.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!