Среда, 18 Сентября 2019, 02:10

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 6 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Форум игроделов » Записи участника » ArtemS [108]
Результаты поиска
ArtemSДата: Вторник, 13 Июня 2017, 18:11 | Сообщение # 101 | Тема: Движение космического корабля
почетный гость
Сейчас нет на сайте
Народ подскажите ,пожалуйста, пытался сделать управление под действием сил, чтобы скорость постепенно набиралась и убывала, а получилось что попало. Корабль начинает лететь в указанном направлении, а потом его уносит вперед какая-то сила, не могу врубиться где накосячил. Linear drag пытался менять, нечего не помогло и на 0, и на других значениях улетает!!! Если этот же код использую без AddForce то все идеально работает....

Код
using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour
{
    public float speedRotation = 1.2f;
    public float speed = 0.05f;
    float inputX;
    float inputY;
    Rigidbody2D rb;
    

    void Start()
    {
       rb = GetComponent<Rigidbody2D>();            
    }

    void Update()
    {

        //извлечение информации оси
        inputX = Input.GetAxis("Horizontal");//лево-право
        inputY = Input.GetAxis("Vertical");  //верх-низ

    }
   
    void FixedUpdate()
    {

        
        if (Input.GetKey(KeyCode.W))                      //вперед
            rb.AddForce(rb.transform.position += rb.transform.up * speed);

        if (Input.GetKey(KeyCode.S))                      //назад
            rb.AddForce(rb.transform.position -= rb.transform.up * speed);

        if (Input.GetKey(KeyCode.A) && Input.GetMouseButton(1))                      //влево
            rb.AddForce(rb.transform.position -= rb.transform.right * speed);

        if (Input.GetKey(KeyCode.D) && Input.GetMouseButton(1))                      //вправо
            rb.AddForce(rb.transform.position += rb.transform.right * speed);

        if (!Input.GetMouseButton(1))
        {
            Quaternion rotate = Quaternion.AngleAxis(-inputX * speedRotation, Vector3.forward);  //вращение
            rb.transform.rotation *= rotate;
        }
    }
        
       

        
}

Добавлено (13 июня 2017, 18:03)
---------------------------------------------
ыыы нашел!! нужно было убрать первое слагаемое и просто оставить знак)

Добавлено (13 июня 2017, 18:11)
---------------------------------------------
Тогда другой вопрос) как корректно сделать движение назад и поворот одновременно (на подобии движения автомобиля), при левой клавише+назад корабль летел влево. Я нашел решене, но мне кажется слишком сложно и мудрино с if оператором.. менять знак оси если одновременно S+A(D) нажаты


хуяк, хуяк и в продакшн
ArtemSДата: Пятница, 05 Мая 2017, 03:55 | Сообщение # 102 | Тема: Устаревшие команды. obsolete и как с этим бороться ?
почетный гость
Сейчас нет на сайте
Цитата Vostrugin ()
Чем они тебе жить мешают?)


боюсь что со временем перестанут работать.

Цитата Wite ()
исправлять на обновленные функции.


так вот я и хочу научиться их исправлять и прошу помощи. хотя бы пример такого исправления.

похоже понял. надо заменить .fixedAngle на .constraints


хуяк, хуяк и в продакшн

Сообщение отредактировал ArtemS - Пятница, 05 Мая 2017, 05:28
ArtemSДата: Четверг, 04 Мая 2017, 17:27 | Сообщение # 103 | Тема: Устаревшие команды. obsolete и как с этим бороться ?
почетный гость
Сейчас нет на сайте
Товарищи, подскажите как или где можно посмотреть как исправить предупреждения типа

'Rigidbody2D.fixedAngle' is obsolete: 'The fixedAngle is no longer supported. Use constraints instead.'

строчка в коде такая

body = GetComponent<Rigidbody2D>();
body.fixedAngle = true;

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


хуяк, хуяк и в продакшн
ArtemSДата: Среда, 03 Мая 2017, 04:03 | Сообщение # 104 | Тема: поменять цвет текста, когда мышка над текстом
почетный гость
Сейчас нет на сайте
а как сделать подсвечиваемую рамку ? или чтобы включалась анимация ?)

хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 24 Апреля 2017, 18:06 | Сообщение # 105 | Тема: А как правильно писать код ?
почетный гость
Сейчас нет на сайте
Пол года смотрю и читаю разные уроки по юньке и возник вопрос.. а как правильнее или удобнее писать код для больших проектов ?
В разных уроках народ объясняет каждый раз по своему, но игры в этих уроках длятся буквально 1-2 уровня, либо объясняют какой-то определенный аспект какого-либо действия.
Сам я нечего крупного пока не написал, так как время хватает лишь посмотреть уроки и повторить за ними, +- какие-то свои моменты протестить, в общем как и у любого новичка..ну я так думаю.

Собственно хочу узнать мнение более опытных людей, скажите ,пожалуйста, как правильнее или грамотнее выстраивать код. Пытаться уложить все в некий GameControllerScript или же каждому объекту и на каждое действие писать свой уникальный скрипт... ну и собственно как это будет влиять на затраты ресурсов компьютера.

Здравый смысл говорит, что
общий код - очень просто запутаться, не знаю но может и обработка будет расти..так как каждый кадр в главном скрипте будет проходить тело всего прооекта..
хренова куча скриптов - как минимум больше памяти будет занимать, но подозреваю, что увеличится работоспособность, да и если грамотно реализовать структуру, то и не запутаешься..

А вы что скажите ?


хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 20 Марта 2017, 19:05 | Сообщение # 106 | Тема: Ошибка NullReferenceException
почетный гость
Сейчас нет на сайте
Цитата Nordicus666 ()
Смотри: дело не в этом скрипте, дело в том, что когда ты делаешь gameover = findObjectOfType<...>(); у тебя в gameover записывается, по простому этот скрипт (а вообще ссылка на него) и ты можешь через эту переменную сразу обращаться к этому скрипту (ну в том же и суть функции findobjectoftype()), но если эта функция (так написано в ее описании, вроде (я её сопоставляю с GetComponent<>() и подобными)) не находит то что ты хочешь, она возвращает null и в переменную соответственно тоже записывается null, а не этот скрипт, и когда ты пытаешься вызвать его функцию, ты пытаешься вызвать функцию "у ничего", у null, ествественно тебе и выдает ошибку nullreferenceexeption - в дословном переводе: Пустота ссылка ошибка, т.е. ошибка пустой ссылки
знаю, пишу много и однообразного, но я первый раз кому то помогаю вообще, а так же просто пытаюсь разными путями одно и то же объяснить для удобства :DD


понятно)) ну в общем у меня юнька похоже повисла, просто перезагрузил ее и ошибка пропала)))) надеюсь навсегда. спасибо за объяснение


хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 20 Марта 2017, 18:31 | Сообщение # 107 | Тема: Ошибка NullReferenceException
почетный гость
Сейчас нет на сайте
Цитата Nordicus666 ()
Reference - ссылка, у тебя в методе OnDestroy, когда ты пытаешься взаимодействовать с gameover (gameover.showbuttons) выходит так, что обращаешься к переменной с null внутри (исходя из текста ошибки), следовательно, когда ты создаешь переменную и запихиваешь в нее FindObjectOfType<GameOverScript>(), то этот findobject ничего не возвращает, следовательно он ничего не находит
вывод: FindObjectOfType<GameOverScript>() не находит GameOverScript, ничего не возвращает, в переменной null, ты пытаешься с ней взаимодействовать, вылетает ошибка.


Так получается у меня кнопки удаляются, а потом при смерти появляются.

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

/// <summary>
/// Start or quit the game
/// </summary>
public class GameOverScript : MonoBehaviour
{
private Button[] buttons;

void Awake()
{
// Get the buttons
buttons = GetComponentsInChildren<Button>();

// Disable them
HideButtons();
}

public void HideButtons()
{
foreach (var b in buttons)
{
b.gameObject.SetActive(false);
}
}

public void ShowButtons()
{
foreach (var b in buttons)
{
b.gameObject.SetActive(true);
}
}

public void ExitToMenu()
{
// Reload the level
Application.LoadLevel("Menu");

}

public void RestartGame()
{
// Reload the level
Application.LoadLevel("Stage1");
}
}


Получается он не находит нечего потому, что у меня HideButton ?
Как можно сделать так , чтобы он не писал мне эту ошибку, подскажи пожалуйста если можешь)


хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 20 Марта 2017, 17:51 | Сообщение # 108 | Тема: Ошибка NullReferenceException
почетный гость
Сейчас нет на сайте
В консоли движка выводится ошибка
"NullReferenceException: Object reference not set to an instance of an object PlayerScript.OnDestroy () (at Assets/Scripts/PlayerScript.cs:112)"

в скрипте прописано

void OnDestroy()
{
// Game Over.
var gameOver = FindObjectOfType<GameOverScript>();
gameOver.ShowButtons();
}


ошибок никаких нет. Единственное в скрипте <GameOverScript> подчеркнуто

Application.LoadLevel("Menu");

сказано что устарел метод, надо юзать другой, но у меня почему-то он не работает. Предпологаю, что у меня 5,5,1f, а новый метод начал работать лишь в 5,5,3

Так вот и вопрос, неужели первая ошибка из-за этого или есть какая-то ошибка в синтаксисе. все работает отлично, просто хочу разобраться что за хрень


хуяк, хуяк и в продакшн
Форум игроделов » Записи участника » ArtemS [108]
  • Страница 6 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Поиск:

Все права сохранены. GcUp.ru © 2008-2019 Рейтинг