Понедельник, 06 Мая 2024, 11:45

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Форум игроделов » Записи участника » ivan2009 [41]
Результаты поиска
ivan2009Дата: Среда, 29 Июля 2015, 21:28 | Сообщение # 21 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата Бозингар ()
Как повернуть объект в нужную сторону, используя метод Rigidbody2d.MoveRotation?

LookAt(); попробуй
ivan2009Дата: Среда, 29 Июля 2015, 20:43 | Сообщение # 22 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте


Вот готовый код выстрела, может кому пригодится...
Такой вопрос как или чем мне проверить потребление ресурсов при работе моего проекта...?

Добавлено (29 июля 2015, 20:43)
---------------------------------------------
Цитата
Работает он только тогда, когда персонаж войдет в специальную зону и нажмет "E"


попробуй так, настрой ток под себя


Таг на игрока не забудь кинуть и скрипт на зону действия вешай


Сообщение отредактировал ivan2009 - Среда, 29 Июля 2015, 20:44
ivan2009Дата: Среда, 29 Июля 2015, 18:11 | Сообщение # 23 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата seaman ()
Цитата
*Time.deltaTime

Это глупость

Забыл убрать перед тем как выложить....я уже столько глупостей туда переписал, хорошо что никто не видел smile
Цитата seaman ()
Возможно transform.forward это мало? Размер перса какой? Если пуля образуется внутри коллайдера перса, то полетит куда попало.

на скорую руку только что сделал так вот
Код
GameObject newBullet = (GameObject) Instantiate(bulletPrefab,transform.position + (Vector3.forward + Vector3.up) ,  Quaternion.identity);

и действительно шар полетел как надо.... немного косячно когда целевой моб за спиной у персонажа(перс пока не поворачивается к цели) шар бьется об коллайдер перса и летит куда попало...
Два дня я колдовал с этим выстрелом а оказалось что коллайдер беспощадная ты ****....убейте меня :))
seaman спасибо за помощ
ivan2009Дата: Среда, 29 Июля 2015, 06:25 | Сообщение # 24 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата ReSeR ()
Ребята подскажите,как сделать событие не по нажатию на кнопку (UI) а при удерживание?)

Input.GetMouseButton
ivan2009Дата: Вторник, 28 Июля 2015, 20:03 | Сообщение # 25 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата seaman ()
Пробуйте ForceMode.Impulse ForceMode.Force

пробовал оба варианта... шар ведет себя странно, в зависимости от положения персонажа шары вылетают по разному(с разной скоростью)
ivan2009Дата: Вторник, 28 Июля 2015, 18:07 | Сообщение # 26 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата seaman ()
Как зайдешь с ПС приведи код какой теперь стал.
А вообще pixeye выше уже все сделал. Копипасть...


Да у меня вроде всё так же в адд форс только для 3д ...
Ну хз где я пропустил ошибку в упор не вижу...


шарик спавнится вяло(причем что хоть ставлю shoot что хоть ставлю shootNormal).
ivan2009Дата: Вторник, 28 Июля 2015, 06:51 | Сообщение # 27 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата seaman ()
Смотрим AddForce. Что там первым параметром? А Вы что передаете?

Ну... первый параметр вектор,я так думал что это координаты либо цели либо персонажа.Пробовал оба варианта...не то... Теперь думаю вот что это координаты точки от куда будет направлена сила...ну эт ток мои догадки..
А про линейную алгебру взял на заметку, на работе почитаю. Спасибо
ivan2009Дата: Понедельник, 27 Июля 2015, 20:23 | Сообщение # 28 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата seaman ()
Убери нафиг все в патроне связанное со временем...

убрал получилось вот так

у меня ещё как я понял направление патрона кривое в скрипте playerShoot. Патрон летит куда полпало, а иногда выдает что растояние слишком велико до цели...хотя я ставил радиус 500м...
Как сделать что бы патрон двигался к позиции моба?
ivan2009Дата: Понедельник, 27 Июля 2015, 19:39 | Сообщение # 29 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте.Тут такая борода...
Читал про плюсы полиморфизма...и вот при помощи его и наследования пытаюсь сделать схему поведения мобов, персонажа..
Проблема в том что в скрипте патрона блок отвечающий за нанесения урона при обнаружении коллайдера пропускает...и получается так что патрон создается и сразу же удаляется...
Unity ошибок не видет, я тоже смотрел смотрел вроде всё логично и правильно...
Может кто подскажет где бида...?
Скрипты ниже
на мобе висит:


на персонаже :


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

А если убрать Destroy(gameObject); в блоке OnCollisionEnter то патрон летит куда то вверх


Сообщение отредактировал ivan2009 - Понедельник, 27 Июля 2015, 20:13
ivan2009Дата: Воскресенье, 26 Июля 2015, 00:41 | Сообщение # 30 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата seaman ()
При первом же Update - dist у Вас будет равно расстоянию от перса до начала координат.

думал в аниматоре или настройках анимации дело...буду подправлять скрипт.Спасибо seaman
ivan2009Дата: Суббота, 25 Июля 2015, 19:02 | Сообщение # 31 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте. Тут такая борода...
Анимация бега на персонаже запускается при запуске сцены в игровой режим, после первого перемещения персонажа всё работает как надо.
настройки анимации



аниматор



скрипт

Код
using UnityEngine;
using System.Collections;

public class PlayerMove : MonoBehaviour {
   Animator animator;
   NavMeshAgent agent;
   private Vector3 distTest;

   // Use this for initialization
   void Start () {
    agent = gameObject.GetComponent<NavMeshAgent> ();
    animator = gameObject.GetComponent<Animator> ();

   }
     
   // Update is called once per frame
   void Update () {
   if (Input.GetMouseButtonDown (0)) {
     RaycastHit hit;
     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
     if(Physics.Raycast(ray, out hit, 300f)){
      agent.destination = hit.point;
      distTest = hit.point;
     }
    }
    float dist = Vector3.Distance (transform.position, distTest);
    Debug.Log (dist);
    if (dist > 0.0f)
     animator.SetFloat ("Speed", 0.2f);
    if (dist <= 1f)
     animator.SetFloat ("Speed", 0.0f);
   }
}


Сообщение отредактировал ivan2009 - Суббота, 25 Июля 2015, 19:07
ivan2009Дата: Воскресенье, 19 Июля 2015, 19:30 | Сообщение # 32 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата MANMANA ()
сама корутина MyCou() в теле класса за пределами методов
Код

Сделал.
получилось так.
Код
void Update () {
   if (waveDelayTimer > 0) {
    waveDelayTimer -= Time.deltaTime;//отнимаем таймер
   }
   if (waveDelayTimer <= 0) {
    if(spawnPoint != null){
     MyCou();
     }
     if(waveCooldown>5.0f){
      waveCooldown -= 0.1f;
      waveDelayTimer = waveCooldown;
     }else{
      waveCooldown = 5.0f;
      waveDelayTimer=waveCooldown;
     }
    }
   }
  IEnumerator MyCou(){
   for(int i =0; i< waveAmont;i++){
     
    Instantiate(mob, new Vector3(spawnPoint.transform.position.x,
                    spawnPoint.transform.position.y,
                    spawnPoint.transform.position.z  + i) ,
                Quaternion.identity) ;
    yelid return  new WaitForSeconds(1.0f);
      
     
   }
  }


но юнити ругается...и я что то не могу понять суть ошибки...
Assets/myScript/MyMobSpawnPoint.cs(43,25): error CS1003: ; expected

Может кто объяснить чего юнити хочет?
ivan2009Дата: Пятница, 17 Июля 2015, 18:18 | Сообщение # 33 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте.
подскажите как мне сделать в цикле for задержку после каждого повторения инкремента?
Код
for(int i =0; i< waveAmont;i++){

      Instantiate(mob, new Vector3(spawnPoint.transform.position.x,
                    spawnPoint.transform.position.y,
                    spawnPoint.transform.position.z  + i) ,
                  Quaternion.identity) ;
        
      }
ivan2009Дата: Четверг, 16 Июля 2015, 19:29 | Сообщение # 34 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата beril ()
Nav Mesh Agent доступень и free версии. Туториалы смотри в мануале, там четко написано и на русском ссылка

Да смотрел уже, вот только что ещё раз пересмотрел....там все описание на англ.... процентов пять из nav mesh agent переведено...

вот не могу понять что ему не нравится....всё как в справочнике

Код
using UnityEngine;

public class MyNavMeshAgent : MonoBehaviour {
    NavMeshAgent agent;
   // Use this for initialization
   void Start () {
    agent = GetComponent<NavMeshAgent> ();
   }
     
   // Update is called once per frame
   void Update () {
   if (Input.GetMouseButtonDown (0)) {
     RaycastHit hit;
     if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit,100)){
      agent.destination = hit.point;
     }
    }
   }
}


а юнити ругается...
"SetDestination" can only be called on an active agent that has been placed on a NavMesh.
UnityEngine.NavMeshAgent:set_destination(Vector3)
MyNavMeshAgent:Update() (at Assets/myScript/MyNavMeshAgent.cs:16)

на сколько я понял не установлено место назначения....так вроде ж hit.poin самое что ни на есть место назначения да и тип данных тот что надо...
разобрался.....написать скрипт было мало...там в нивигейшн надо было ещё зону разметить... разметил и меня кубик начал сам по себе что бешеный летать по терейну...потом методом тыка нашел что в ригид боди надо поставить галку в is kinematic ...
хотелось бы почитать про все прелести меш агента...если кого есть инфа на русском поделитесь пожалуйста


Сообщение отредактировал ivan2009 - Четверг, 16 Июля 2015, 20:17
ivan2009Дата: Четверг, 16 Июля 2015, 17:55 | Сообщение # 35 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте. Подскажите Nav Mesh Agent работает только в pro версии или в обычной тоже(у меня unity 5.1.1).
И может кто объяснить как ним работать или может кто знает какой то сайт, туториал на русском раскрывающий суть этого компонента?
ivan2009Дата: Воскресенье, 12 Июля 2015, 18:45 | Сообщение # 36 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата seaman ()
Ну во первых - вынесите проверку луча из if(walk)
Во вторых выключайте walk, когда расстояние до цели меньше заданного:

Ну вроде бы всё сделал...но результат остался тот же...кубик по оси Z(дрожит) при остановке, не пойму почему чем выше я ставлю скорость тем больше эффект дрожания ...И всё равно если freez rotation убрать то кубит вертится вокруг своей оси...

Вот исходник после поправок :

Код

using UnityEngine;
using System.Collections;

public class myMove : MonoBehaviour {
    public float speed = 5f;
    Ray ray;
    RaycastHit hit;
    bool walk = true ;
    public Vector3 TargetToMove = new Vector3();
    CharacterController controller;

    // Use this for initialization
    void Start () {
     controller = (CharacterController)gameObject.GetComponent<CharacterController>();

    }
    // Update is called once per frame
    void Update () {
     if (Input.GetMouseButtonDown (0)) {
      ray = Camera.main.ScreenPointToRay (Input.mousePosition);
      Physics.Raycast (ray, out hit, 500.0f);
      TargetToMove = hit.point;
      walk = true;
     }
     if (walk) {
      move ();
     }
    }

    void move(){
     Vector3 posMove = (TargetToMove - transform.position);
     Vector3 posNormal = posMove.normalized;
     controller.SimpleMove (posNormal * Time.deltaTime * speed);
     if (posMove.magnitude < 0.1f) {
      walk = false;
     }
    }
}


Ещё такой вопросик
Сделал вращение дочернего объекта вокруг родителя... вращается горизонтально, а как сделать к примеру что бы вращался он по вертикальной оси, как управлять направлением вращения?
Код
using UnityEngine;
using System.Collections;

public class Gravity : MonoBehaviour {
  public Transform target;

  // Update is called once per frame
  void Update () {
   Vector3 relativePos = (target.position + new Vector3(0, 1, 0)) - transform.position;
   Quaternion rotation = Quaternion.LookRotation (relativePos);
   Quaternion current = transform.localRotation;
   transform.localRotation = Quaternion.Slerp (current , rotation, Time.deltaTime);
   transform.Translate (0, 0 , 5 * Time.deltaTime);

  }
}


Сообщение отредактировал ivan2009 - Воскресенье, 12 Июля 2015, 21:37
ivan2009Дата: Пятница, 10 Июля 2015, 19:20 | Сообщение # 37 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Спасибо.
У куба при остановке постоянно меняется координата Z (transfotm.position), там тысячные доли циклически(по возрастанию) происходит это быстро(а чем больше я ставлю скорость тем больше это дрожание) и получается что кубик дрожит.
И ещё куб постоянно меняет координаты всех осей rotation(вокруг своей оси),я то поставил freezRotation в Rigidbody, но хотелось бы и самому его покрутить...
исходник
Код
using UnityEngine;
using System.Collections;

public class myMove : MonoBehaviour {
  public float speed = 5f;
  Ray ray;
  RaycastHit hit;
  float mag;
  bool walk = true ;
  public Vector3 TargetToMove = new Vector3();
  CharacterController controller;

  // Use this for initialization
  void Start () {
   controller = (CharacterController)gameObject.GetComponent<CharacterController>();

  }
  // Update is called once per frame
  void Update () {
   if (walk) {
    if (Input.GetMouseButtonDown (0)) {
     ray = Camera.main.ScreenPointToRay (Input.mousePosition);
     if (Physics.Raycast (ray, out hit, 500.0f)) {
      TargetToMove = hit.point;
      walk = true;
     }
    }
    move ();
   }
  }

  void move(){
   var posMove = (TargetToMove - transform.position).normalized;
   controller.SimpleMove (posMove *   Time.deltaTime * speed  );

  }
}

Буду очень признателен за помощь!


Сообщение отредактировал ivan2009 - Пятница, 10 Июля 2015, 19:22
ivan2009Дата: Четверг, 09 Июля 2015, 23:56 | Сообщение # 38 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
получилось, радостно.
на всяк случай скину код может найдутся ещё такие как я...
Код
using UnityEngine;
using System.Collections;

public class myMove : MonoBehaviour {
//    private Vector3 mousePos;
    //private Vector3 playerPos;
    public float speed = 5f;
    Ray ray;
    RaycastHit hit;
       GameObject player;
    float mag;
    bool walk =true ;
    public Vector3 TargetToMove = new Vector3();
    CharacterController controller;

    // Use this for initialization
    void Start () {
     player = (GameObject)this.gameObject;
       controller = (CharacterController)gameObject.GetComponent(typeof(CharacterController));
     //playerPos = player.transform.position;

    }

    // Update is called once per frame
    void Update () {

     if (walk) {

      //mousePos = Input.mousePosition;
      if(Input.GetMouseButton(0)){
       ray = Camera.main.ScreenPointToRay(Input.mousePosition);
       if(Physics.Raycast(ray, out hit, 500.0f)){
        TargetToMove = hit.point;
        walk = true;

       }
      }
      move();
      }
    }
    void move(){
     var posMove = TargetToMove - transform.position;
        controller.SimpleMove (posMove * Time.deltaTime * speed);

        
    }

}

При движении кубик калашматило по всем осям пока в RigidBody freez rotation не поставил.
Очень доволен что получилось, сижу гоняю кубик по платформе... smile
Спасибо большое за помощь

Я заметил что по мере приближения объекта к указанной точке он замедляется и чем ближе тем медленней передвигается. Как сделать ему постоянную скорость вне зависимости от оставшегося расстояния?


Сообщение отредактировал ivan2009 - Пятница, 10 Июля 2015, 00:29
ivan2009Дата: Четверг, 09 Июля 2015, 23:14 | Сообщение # 39 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Получилось так вот
Код
using UnityEngine;
using System.Collections;

public class myMove : MonoBehaviour {
  private Vector3 mousePos;
  //private Vector3 playerPos;
  public float speed = 5f;
  Ray ray;
  RaycastHit hit;
  GameObject player;
  float mag;
  bool walk =true;
  public Vector3 TargetToMove = new Vector3();
  CharacterController controller;

  // Use this for initialization
  void Start () {
   player = (GameObject)this.gameObject;

   //playerPos = player.transform.position;

  }

  // Update is called once per frame
  void Update () {

   if (walk) {

    mousePos = Input.mousePosition;
    if(Input.GetMouseButton(0)){
     ray = Camera.main.ScreenPointToRay(Input.mousePosition);
     if(Physics.Raycast(ray, out hit, 500.0f)){
      TargetToMove = hit.point;
      walk = true;

     }
    }
    move();
    }
  }
  void move(){
   var posMove = TargetToMove - transform.position;
        controller.SimpleMove (posMove * Time.deltaTime * speed);

    
  }

}

Только вот куб не двигается, переменная TargetToMove отображает координаты, и ругается что вроде как controller постоянно с дэфолтовым значением(null) точно не умерен, в англ слабоват...
вот что юнити пишет
Assets/MyScript/myMove.cs(14,29): warning CS0649: Field `myMove.controller' is never assigned to, and will always have its default value `null'

куда мне контроллер надо подключить?
ivan2009Дата: Четверг, 09 Июля 2015, 20:25 | Сообщение # 40 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте.
Начал изучать юнити совсем недавно,так что если кому то мои вопросы покажутся нубскими, уж извиняйте...
Хочу сделать контроллер перемещения объекта с помощью мышки,самый простой, что бы кубик передвигался(пока без анимации ) по платформе по клику ЛКМ в указанное место.
Шастал по просторам гугла, читал описания, даже нашел готовый скрипт(правда на устаревший юнити, у меня 5.1.1).
В общем все что смог пока родить
Код
using UnityEngine;
using System.Collections;

public class myMove : MonoBehaviour {
  private Vector3 mousePos;
  //private Vector3 playerPos;
  public float speed = 5f;
  Ray ray;
  RaycastHit hit;
  GameObject player;
  float mag;

  // Use this for initialization
  void Start () {
   player = (GameObject)this.gameObject;
   //playerPos = player.transform.position;

  }

  // Update is called once per frame
  void Update () {
   mousePos = Input.mousePosition;
   if (Input.GetMouseButton (0)) {
    ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if(Physics.Raycast(ray, out hit, 500.0f)){
     Debug.Log ("MOUSE POS -> " + mousePos);
     //mag = (transform.position - hit.point).magnitude;
     //player.transform.position =  Vector3.MoveTowards(player.transform.position, hit.point, mag);
    //player.transform.position = new Vector3(hit.point.x, transform.position.y , hit.point.z);
     //player.transform.position += hit.point*speed*Time.deltaTime;
     Debug.Log("NEW PLAYER POS -> " + player.transform.position);

    }
   }

  }
}

И вот какие незадачи...
если подключаю в первом варианте mag = (transform.position - hit.point).magnitude;
player.transform.position = Vector3.MoveTowards(player.transform.position, hit.point, mag);
- то кубик мгновенно появляется в точке hit.point и начинает взлетать по оси У.
во втором player.transform.position = new Vector3(hit.point.x, transform.position.y , hit.point.z); - то кубик мгновенно появляется в точке hit.point, если зажать ЛКМ и подвигать мышкой, то дублирует координаты курсора.
в третьем player.transform.position += hit.point*speed*Time.deltaTime; - то кубик движется в hit.point пока зажата кнопка ЛКМ, а иногда движется и не туда smile
А мне бы хотелось сделать так что при нажатии ЛКМ(одном клике) кубик с определенной скоростью передвигался в точку hit.point, но пока что видать не хватает в голове нужных знаний.
Так что буду очень признателен если кто то поможет.
Форум игроделов » Записи участника » ivan2009 [41]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

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