Задать вопрос
  • Как поменять направление пули?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Пуля летит вправо, потому что внутри ShootScript ей задаётся такое направление:
    MoveScript move = shootTransform.gameObject.GetComponent<MoveScript>();
    if (move != null)
    {
        move.direction = this.transform.right;
    }

    Зададите другое - полетит в другую сторону. Нужный вектор можно найти с помощью Input.mousePosition и Camera.ScreenToWorldPoint.
    А вообще говоря, специально для таких случаев юнити создаёт проекты-туториалы, где есть готовые скрипты, которые можно изучать и делать своё, либо использовать как есть.
    Ответ написан
    1 комментарий
  • Если я пишу код на основе других, это плохо?

    tomnolane
    @tomnolane
    профессиональный разработчик
    90% так и надо делать!
    1 правило хакера (точнее компьютерщика кодера, программиста) - не создавать велосипед, а использовать готовое.
    Если для повышения скила - то лучше конечно самим придумать/разработать/написать.
    Если для всего остального - чем быстрее напишите (особенно с учётом/доработками вашего проекта) - тем лучше для всех. Останется время пиво попить и футбол посмотреть) или с семьёй побыть рядом.

    п.с. для повышения скила можно и тостер использовать в частности - пытаясь отвечать/решать вопросы +
    попробовать в чужом коде сделать рефакторинг +
    когда столкнётесь с тем, что даже примерно аналога нету - конечно придётся самим решать, НО, вы же не просто ctrl+c ctrl+v делаете, а подгоняете код под ваши нужды и хоть немного но разбираетесь в том, что он делаете (т.е. вы увеличиваете скилл). И лучше за n-промежуток времени столкнуться 1-2 раза, когда сами ручками и головой будете решать ТАКОЕ, чем на каждый чих - тратить время

    Если я пишу код на основе других, это плохо?

    в 90% случаев - НЕТ

    п.с.с.
    умение найти чужой код (понять его), который будет работать + его доработать(встроить) - тоже, очень и очень важное умение!

    03aee4062f1347ed96f49f044ebe25b3.PNG
    Ответ написан
    2 комментария
  • UI в Unity и NullReferenceException?

    @Beltoev
    Живу в своё удовольствие
    Может рано в GameDev, когда даже NullReferenceException в такой тупик ставит? Сначала хотя бы с С# может разобраться?

    Ну, а так, у вас cube не инициализирована и нет проверки на это
    Ответ написан
    Комментировать
  • Отправка письма на email.?

    tomnolane
    @tomnolane
    профессиональный разработчик
    вы уверены, что:
    1) указали верный порт smtp принимающей(к какой подключаетесь) стороны? (точно 587 ??? не всегда используется 587 для smtp)
    2) указали верный адрес почты?
    3) верный логин и пароль?

    вот рабочий код:
    class Program
        {
            static void Main(string[] args)
            {
                 
                // отправитель - устанавливаем адрес и отображаемое в письме имя
                MailAddress from = new MailAddress("somemail@gmail.com", "Tom");
                // кому отправляем
                MailAddress to = new MailAddress("somemail@yandex.ru");
                // создаем объект сообщения
                MailMessage m = new MailMessage(from, to);
                // тема письма
                m.Subject = "Тест";
                // текст письма
                m.Body = "<h2>Письмо-тест работы smtp-клиента</h2>";
                // письмо представляет код html
                m.IsBodyHtml = true;
                // адрес smtp-сервера и порт, с которого будем отправлять письмо
                SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
                // логин и пароль
                smtp.Credentials = new NetworkCredential("somemail@gmail.com", "mypassword");
                smtp.EnableSsl = true;
                smtp.Send(m);
                Console.Read();
            }
        }


    вот асинхронный код:
    class Program
        {
            static void Main(string[] args)
            {
     
                SendEmailAsync().GetAwaiter();
                Console.Read();
            }
     
            private static async Task SendEmailAsync()
            {
                MailAddress from = new MailAddress("somemail@gmail.com", "Tom");
                MailAddress to = new MailAddress("somemail@yandex.ru");
                MailMessage m = new MailMessage(from, to);
                m.Subject = "Тест";
                m.Body = "Письмо-тест 2 работы smtp-клиента";
                SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
                smtp.Credentials = new NetworkCredential("somemail@gmail.com", "mypassword");
                smtp.EnableSsl = true;
                await smtp.SendMailAsync(m);
                Console.WriteLine("Письмо отправлено");
            }
        }

    если через это не отправится - значит проблемы с указанными данными: порт, емеил, логи и пароль...
    Ответ написан
    1 комментарий
  • Как в Unity3D можно рисовать графики?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    В юнити используется UnityScript, с браузерным JavaScript у них общий только синтаксис, больше ничего, поэтому использовать в нём можно только юнитёвые библиотеки.
    Графики можно рисовать разными способами, зависит от желаемого визуального решения, готовых компонентов нет, в конченом итоге всё придётся делать через скрипт. Для рисования линий самым простым вариантом будет использовать Line Renderer. Более продвинутым и производительным вариантом будет GL, но с ним придётся дольше возиться. На худой конец можете просто рисовать по текстуре с помощью Texture2D.SetPixels.
    Ответ написан
    2 комментария
  • Как осуществить поиск вводимых слов в textBoxt и вывод нужного результата в форме WinForms?

    EreminD
    @EreminD
    Кое-что умею
    а проблема-то в чем?
    пока выглядит так, что вы просто просите написать за вас

    1. Создайте в студии форму
    2. Накиньте текстБокс и кнопку
    3. При клике на кнопку брать текст из текстБокса и искать вхождение в список заранее определенных (либо введенных пользователем) строк

    Пока ничего сложного

    UPD: исходя из того, что у вас есть листБокс (он удобнее), текстБокс и кнопка, получается, такой код
    public Form1()
    		{
    			InitializeComponent();
    		}
    
    		private void button2_Click(object sender, EventArgs e)
    		{
    			string search = textBox2.Text;
    			int index = listBox1.Items.IndexOf(search);
    			listBox1.SelectedIndex = index;
    		}
    	}
    Ответ написан
    4 комментария
  • Как сделать что бы время шло, когда переходишь на другую сцену?

    @S0HardCore
    Сохраняешь DateTime начала отсчета в PlayerPrefs, а при загрузке новой сцены сравниваешь, если: DateTime (текущая) - DateTime (из PlayerPrefs) > time (тут понадобится умножение на коэффициент, скорее всего 10 миллионов), то вызываешь корутину с ожиданием "time - (dateTimeCurrent - dateTimePrefs) / 10 000 000.
    Ответ написан
    Комментировать
  • В чём ошибка Unity(CS0236)?

    TheTalion
    @TheTalion
    Описание ошибки: https://msdn.microsoft.com/en-us/library/5724t6za.aspx
    Можно сделать так:
    private float xPos;
    private float yPos;

    void Awake()
    {
    xPos = obj.transform.position.x;
    yPos = obj.transform.position.y;
    }
    Ответ написан
    Комментировать
  • Реализация CR4 на C#?

    tomnolane
    @tomnolane
    профессиональный разработчик
    посмотрите на строчки.... у себя в коде...
    byte[] ByteCrypt = ASCIIEncoding

    string strout = UTF8Encoding

    byte[] pass = ASCIIEncoding.Unicode.GetBytes(TBpass.Text);
    RC4 encoder = new RC4(pass);
    string textCrypt = TBtext.Text;
    byte[] ByteCrypt = ASCIIEncoding.Unicode.GetBytes(textCrypt);
    byte[] result = encoder.Encode(ByteCrypt, ByteCrypt.Length);
    string strout = ASCIIEncoding.Unicode.GetString(result, 0, result.Length); // UTF8Encoding поменять на ASCIIEncoding
    TBtext.Text = strout;


    п.с. не тестил... но по нему у вас разная кодировка...

    п.с.с. в вашей ссылке на сайт(статью) кусок кода:
    byte[] key = ASCIIEncoding.ASCII.GetBytes("Key");
    
    RC4 encoder = new RC4(key);
    string testString = "Plaintext";
    byte[] testBytes = ASCIIEncoding.ASCII.GetBytes(testString);
    byte[] result = encoder.Encode(testBytes, testBytes.Length);
    
    RC4 decoder = new RC4(key);
    byte[] decryptedBytes = decoder.Decode(result, result.Length);
    string decryptedString = ASCIIEncoding.ASCII.GetString(decryptedBytes);


    нигде не смешиваются кодировки ASCIIEncoding и UTF8Encoding (а у вас в коде смешиваются)
    Ответ написан
    Комментировать
  • Какую графическую 3d библиотеку на C# выбрать для создания игры?

    @Nwton
    DirectX
    Ответ написан
    Комментировать
  • Дрожание 2D персонажа при столкновении с колайдерами, как исправить?

    @Espleth
    А что вас конкретно не устраивает? Персонажа и должно отталкивать от коллайдеров.
    Но попробуйте пару вариантов:
    1) Двигайте персонажа не через transform.Translate, а через rigidbody.AddForce. Подозреваю что проблема в этом: персонаж у вас проходит в коллайдер и его отталкивает из коллайдера назад.
    2) Создайте для коллайдеров (в т.ч. игрока) физический материал и поставьте bounciness на 0, но судя по всему проблема решится 1ым вариантом.
    Ответ написан
    5 комментариев
  • Как создать раздел в недоступной, неразмеченной области жёсткого диска?

    opium
    @opium
    Просто люблю качественно работать
    Проблема очевидно у вас mbr она позволяет разметить только два террабайта места, надо gpt данные конечно все потеряются при этом.
    Конвертировать разметку ч gpt можно в Диспетчере дисков если кликнуть правой кнопкой мыши по диску.
    Ответ написан
    2 комментария
  • Как называется такая конструкция в C#?

    tomnolane
    @tomnolane
    профессиональный разработчик
    геттер (свойство).

    Оно позволяет возвращать объект типа Matrix под именем transform, который храниться в приватной "Области видимости". И это стандартная "тема".

    Допустим, есть объект который только хранит в себе что-то private string my_string = "что-то";
    он находится в области видимости "private" - т.е. доступен для использования только в рамках того класса, где он находится. В другом классе к нему (my_string) нельзя получить доступ и изменить. И в идеале так и нужно делать, чтобы созданные объекты были доступны только там, где надо, а не везде...
    далее создаём геттер (который только отдаёт значение объекта my_string, при этом сам в себе ничего не хранит (только ссылку),
    private string my_string = "что-то";
    public string My_String { get { return my_string ; } }

    его (My_String ) делают открытым (public) и позволяют безопасно получать данные из my_string;

    аналогично можно сделать сеттер, но ниже покажу самый распространённый:
    private string my_string = "что-то";
    public string My_String { get { return my_string ; } set { my_string  = value; }}

    в этом случае мы можем записывать (условно безопасно из другого класса к примеру) в my_string какие-то данные через My_String.

    всё это делается очень легко:
    //получить данные из my_string (get)
    var temp = My_String; 
    //записать/установить/изменить данные в my_string (set)
    My_String = "я тебя изменяю";  // в этом случае в  будет не my_string = "что-то", а my_string = "я тебя изменяю"
    Ответ написан
    1 комментарий
  • Как использовать переменные по запросу?

    @John_Nash
    coder
    Что вы понимаете под словом "переменная"? В коде есть статическое свойство и метод. Передача свойства в качестве 2го параметра вызывает метод get.
    PS: советую потратить немного времени на чтение основ: поля, свойства, методы, чтобы понимать, чем они отличаются
    Ответ написан
    Комментировать
  • Kак решить проблему со спавном в unity3d?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Вы же при вызове Instantiate указываете положение и вращение, конечно у вас вращение из префаба игнорируется. Либо вынесите в инспектор ObjectSpawner параметр доворота и используйте его при инстанциировании, либо перепишите генератор так, чтобы он сразу спавнил домики по обеим сторонам улицы.
    Ответ написан
    Комментировать
  • C#: Как правильно прочитать и записать объекты в ArrayList?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Не стоит использовать ArrayListбез весомой на то необходимости. Поэтому компилятор не смог вас предупредить, что ArrayListсостоит из ArrayList'ов, в котором строки (двумерный массив строк), а не просто строк.

    Вместо ArrayListнеобходимо использовать типизированный динамический массивList<string>.

    public void Click_OpenFile()
    {
        string fileName = form1.OpenFie();
    
        IList<string[]> aL = ParseFile(fileName);
    
        foreach (var line in aL)
        {
            // Снова собираем токены в строки
            MessageBox.Show(string.Join(" ", line));
        }
    }
    
    // Читаем файл и построчно парсим его
    private IList<string[]> ParseFile(string fileName)
    {
        if (string.IsNullOrEmpty(fileName))
        {
            throw new ArgumentNullException(nameof(fileName));
        }
        if (!File.Exists(fileName))
        {
            throw new ArgumentException($"There is no file {fileName}!");
        }
    
        string[] fileContent = File.ReadAllLines(result);
        var aL = new List<string[]>(fileContent.Length);
        foreach (var line in fileContent)
        {
            aL.Add(ParseString(line));
        }
        return aL;
    }
    
    // Разбиваем строки на токены
    private string[] ParseString(string s)
    {
        const char delimiter = '|';
        return s.Split(delimiter);
    }
    Ответ написан
    Комментировать
  • Как сделать плавное увеличение объекта?

    @S0HardCore
    Вариант с корутинами. Запускаешь через:
    StartCoroutine(SlowScale());

    IEnumerator SlowScale()
    {
       for (float q = 1f; q < 2f; q += .1f;)
       {
          transform.localScale = new Vector3(q, q, q);
          yield return new WaitForSeconds(.05f)
       }
    }

    Где .1f - величина изменения размера, а .05f - скорость изменения.
    Ответ написан
    5 комментариев
  • Как сделать плавное увеличение объекта?

    GavriKos
    @GavriKos Куратор тега Unity
    Lerp в Update по времени. Запоминаете текущий скейл и целевой, задаете время за сколько надо измениться, и между ними интерполируетесь каждый кадр.
    Или используйте плагины типа tweener.
    Ответ написан
    1 комментарий
  • Сгорела видеокарта и PCI разьем ,компьютер постоянно перезагружается,из-за чего?

    Обратитесь к иженеру-электронщику для диагностики мат. платы и замены сгоревших компонентов. Какой ещё ответ вы ожидаете здесь увидеть?
    Ответ написан
    6 комментариев