Pull to refresh

Comments 15

TargetterGame повеселило :)
Почему-то у меня тоже всякие финальные версии игр называются примерно так, хотя сейчас приучаю себя делать папочки с версиями.

А за пост спасибо, Unity нравится.
Спасибо :)

Это, в общем-то, даже не финальная версия, если начать реализовывать все задумки… Изначально это был пробный проект, чтобы попробовать прикрутить «что-нибудь ещё», чтобы потом было проще прикручивать это к следующим проектам.
Спасибо за статью по Unity) Все больше думаю о переходе с флеша на эту платформу…
void OnCollisionEnter()
{
    if (!rigidbody)
    {
        gameObject.AddComponent("Rigidbody"); 
        GameManager.score++;
    }
}
Вот этот кусок не понял. Зачем на каждую коллизи цеплять rigidbody?
Или это чтобы отслеживать, что по этой мишени уже попали?
Именно из-за условия
if (!rigidbody)

rigidbody цепляется не каждую коллизию, а только первую. Если у объекта уже есть этот компонент, условие вернёт false и ничего интересного не произойдёт.
Из задания: "Мишени при попадании должны падать..."
Реализовано таким образом, что изначально мешени не являются физическими телами. Но, даже не будучи физическими телами, они могут обрабатывать соударения. Таким образом при соударении сначала проверяется является ли объект твердым физическим телом, и, если нет, его делают таковым (не забывая увеличить счетчик сбитых мешеней). А, когда объект становится физическим телом, на него начинает действовать гравитация, и он падает.
Каюсь, читал по диагонали. Идею понял.

Просто в документации есть свойство useGravity. Меняя статус которого можно добиться того же эффекта.
В конце статьи об этом написано. А там, где не написано, сказано, что будет в конце)
В любом случае продолжайте писать. Видео туториалы как-то туговато идут(от части от того, что бОльшая их часть на английском). А тут вроде всё наглядно.
Я мальца позанудствую.
Обычно логические операторы используют с булевым типом, поэтому наверное лучше взамен !rigidbody, писать
rigidbody != null

Зачем лишняя переменная?
float translation = Input.GetAxis("Horizontal") * Time.deltaTime * speed; transform.position += new Vector3(0, 0, translation);

transform.position += new Vector3(0, 0, Input.GetAxis("Horizontal") * Time.deltaTime * speed;);
Сорри, за лишную; в последней строчке — копипаст, такой копипаст
И очепятка в части по условный оператор: сейчас там указаны противоположные условия)
А да, спасибо, я чет вааще
С первым моментом согласен, так понятнее будет, поправлю.

Лишняя переменная — правда лишняя, оставлена для наглядности: вот тут мы посчитали нужное перемещение, а вот тут переместили.

Учитывая, что это делается каждый кадр, лучше правда обойтись без неё, но пока это не критично.
Sign up to leave a comment.

Articles