Понедельник, 25 Ноября 2024, 23:23

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Результаты поиска
Vasiliy_IvanovichДата: Четверг, 19 Ноября 2015, 14:14 | Сообщение # 1 | Тема: Длинна прыжка (2D платформер)
был не раз
Сейчас нет на сайте
NovaSurfer, Спасибо. Он конечно летит, но как-то уж очень медленно, падает гораздо быстрее.
Tymonr, а что означает нормализовать вектор?
NEBR, rigidbody использую исключительно ради гравитации. Сейчас попробую без него.
Vasiliy_IvanovichДата: Среда, 18 Ноября 2015, 00:38 | Сообщение # 2 | Тема: Длинна прыжка (2D платформер)
был не раз
Сейчас нет на сайте
Друзья, подскажите как сделать так, чтобы длинна прыжка в 2д платформере с использованием физики зависела от времени удержания клавиши прыжка, т.е. если нажал и быстро отпустил, то герой прыгнул не высоко, если нажал и удерживаешь, то герой летит пока не отпустишь клавишу. Я так полагаю, что сила должна действовать на протяжении всего времени удержания клавиши, а вот как ее задать не знаю. В справке копался, ничего не нашел. Сейчас использую такой метод:
Код
rigidbody2D.AddForceAtPosition (transform.right * 1200, mouseGlob);
Vasiliy_IvanovichДата: Воскресенье, 15 Ноября 2015, 16:28 | Сообщение # 3 | Тема: Поворот по направлению движения (2D)
был не раз
Сейчас нет на сайте
Спасибо. Правда вторая ссылка ошибку выдает, ну да ладно.
Vasiliy_IvanovichДата: Суббота, 14 Ноября 2015, 23:44 | Сообщение # 4 | Тема: Поворот по направлению движения (2D)
был не раз
Сейчас нет на сайте
Цитата NightLord ()
точка, куда смотреть жеж)
http://docs.unity3d.com/current/ScriptReference/Transform.LookAt.html


LookAt не подходит, т.к. у меня 2д игра. А проблему я свою решил. Спасибо за участие.

Добавлено (14 ноября 2015, 23:44)
---------------------------------------------
Кстати возник другой вопрос: как сделать чтобы в 2д платформере герой мог запрыгивать на платформы, т.е. когда он снизу платформы, то при прыжке он пролетает сквозь нее, когда сверху, то падает на нее. Я пробовал слои менять, но что-то ничего не получилось.

Vasiliy_IvanovichДата: Пятница, 13 Ноября 2015, 20:06 | Сообщение # 5 | Тема: Поворот по направлению движения (2D)
был не раз
Сейчас нет на сайте
Цитата NightLord ()
используй transform.LookAt

а что в качестве аргументов указывать?
Vasiliy_IvanovichДата: Четверг, 12 Ноября 2015, 22:34 | Сообщение # 6 | Тема: Поворот по направлению движения (2D)
был не раз
Сейчас нет на сайте
Здравствуйте. Имеется 2д проект, в котором объект прыгает по клику мыши в сторону этого самого клика. Вот такой скрипт висит на этом объекте:

Код
if (Input.GetMouseButtonDown(0)) {
   mouseGlob = Camera.main.ScreenToWorldPoint (Input.mousePosition);

   
   var dir = mouseGlob - new Vector2 (transform.position.x, transform.position.y);
   var angle = Mathf.Atan2 (dir.y, dir.x) * Mathf.Rad2Deg;

   transform.rotation = Quaternion.AngleAxis (angle,Vector3.forward);
    
   rigidbody2D.AddForceAtPosition (transform.right  * 200, mouseGlob);
}


Как сделать так, чтобы направление объекта осуществлялось по направлению его движения? Заранее спасибо за любую подсказку.
Vasiliy_IvanovichДата: Воскресенье, 08 Ноября 2015, 17:17 | Сообщение # 7 | Тема: Поблема с Ragdoll
был не раз
Сейчас нет на сайте
Спасибо друзья. Методом тыка решил проблему. Нужно было на каждом коллайдере в ригидбоди проставить галочку is kinematic, правда после смерти врага приходиться его отключать. Хрен его знает для чего этот кинематик нужен, но вроде работает...
Vasiliy_IvanovichДата: Воскресенье, 08 Ноября 2015, 00:31 | Сообщение # 8 | Тема: Поблема с Ragdoll
был не раз
Сейчас нет на сайте
Проблема такая: есть у меня враг, на раках ногах и т.п. висят коллайдеры, ригидбоди и т.д. гг у меня стреляет рейкастами. так вот при стрельбе по врагу лучи очень часто проходят сквозь врага, хотя выстрел был произведен точно в коллайдер (много раз проверял). есть такой же враг, но без ригидбоди, просто с коллайдерами, там лучи попадают как надо, а мне же надо чтобы он умирал красиво.. С чем может быть связана данная проблема, кто-нибудь сталкивался с подобным?
Vasiliy_IvanovichДата: Понедельник, 02 Ноября 2015, 15:35 | Сообщение # 9 | Тема: Как сделать хедшот?
был не раз
Сейчас нет на сайте
Цитата shizofren ()
Vasiliy_Ivanovich, на какой строчке?


на строчках

case "head": hitingHealth.hp -= 100; return;
case "arm" : hitingHealth.hp -= 25; return;

Добавлено (02 ноября 2015, 15:35)
---------------------------------------------
В общем покапался в справке чуть-чуть, и на меня нахлынуло вдохновение. Его результат ниже

Код
using UnityEngine;
using System.Collections;

public class Shoot : MonoBehaviour {
       
        void Update () {
                Ray ray1 = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2,Screen.height / 2));
                RaycastHit hit1;
                if (Input.GetMouseButtonDown (0))
                {
                    if (Physics.Raycast (ray1, out hit1,1000f))
                    {
                    
                    GameObject enemy = hit1.collider.gameObject;
                    if (enemy.tag == "enemy"){
                    enemy.GetComponent<HealthScript>().hp -= 30;

                    }
                    if (enemy.tag == "arm") {
      enemy.GetComponentInParent<HealthScript> ().hp -= 15;
       }
       if (enemy.tag == "head") {
       enemy.GetComponentInParent<HealthScript> ().hp -= 100;
       }
                  }

            }
               
}
}


при этом теги на разные конечности конечно же были назначены
Vasiliy_IvanovichДата: Понедельник, 02 Ноября 2015, 13:50 | Сообщение # 10 | Тема: Как сделать хедшот?
был не раз
Сейчас нет на сайте
Изменил скрипт на то, что вы говорили
Код

using UnityEngine;
using System.Collections;

public class Shoot : MonoBehaviour {
       
        void Update () {
                
                HealthScript hitingHealth;

                Ray ray1 = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2,Screen.height / 2));
                RaycastHit hit1;
                if (Input.GetMouseButtonDown (0))
                {
                        if (Physics.Raycast (ray1, out hit1,1000f))
                        {
                    
                            hitingHealth = hit1.transform.GetComponent<HealthScript>();
                            switch(hit1.transform.tag)
                            {
                    case "head": hitingHealth.hp -= 100; return;
                    case "body": hitingHealth.hp -= 50; return;
                    case "arm" : hitingHealth.hp -= 25; return;
                             }
                          }
                   }       
           }
}


Выдает такую ошибку

Код
NullReferenceException: Object reference not set to an instance of an object


при этом "body" это тег родительского объекта и при попадании в него никаких ошибок не возникает


Сообщение отредактировал Vasiliy_Ivanovich - Понедельник, 02 Ноября 2015, 13:59
Vasiliy_IvanovichДата: Понедельник, 02 Ноября 2015, 00:15 | Сообщение # 11 | Тема: Как сделать хедшот?
был не раз
Сейчас нет на сайте
Цитата shizofren ()
hit.transform.tag


каждой части тела нужно тег назначить, я правильно понимаю? в таком случае как в скрипте указать что эта часть тела какого-то определенного объекта?
Vasiliy_IvanovichДата: Воскресенье, 01 Ноября 2015, 19:26 | Сообщение # 12 | Тема: Как сделать хедшот?
был не раз
Сейчас нет на сайте
Цитата URGINSAN ()
либо по тегу искать, либо по имени

что именно искать по тегу? вот у меня в скрипте по тегу найден родительский объект, а как найти его дочерние объекты, руки ноги и т.д.? ведь руки ноги и тд. это его дочерние объкеты?
Vasiliy_IvanovichДата: Воскресенье, 01 Ноября 2015, 16:06 | Сообщение # 13 | Тема: Как сделать хедшот?
был не раз
Сейчас нет на сайте
а как в скрипте обозначить что луч попал в коллайдер например ноги именно этого объекта?
Vasiliy_IvanovichДата: Воскресенье, 01 Ноября 2015, 01:13 | Сообщение # 14 | Тема: Как сделать хедшот?
был не раз
Сейчас нет на сайте
Здравствуйте. Расскажите кто-нибудь пожалуйста как реализуется система при которой враг теряет разное количество
НР в зависимости от того в какую из частей его тела попала пуля (в моем случае луч), например в голову -100 НР, в тело -50, в руку -20 и т.д.
Скрипт стрельбы (и получения урона врагом) у меня такой:

Код
using UnityEngine;
using System.Collections;

public class Shoot : MonoBehaviour {
       
        void Update () {
                Ray ray1 = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2,Screen.height / 2));
                RaycastHit hit1;
                if (Input.GetMouseButtonDown (0))
                {
                        if (Physics.Raycast (ray1, out hit1,1000f))
                        {
                    
                    GameObject enemy = hit1.collider.gameObject;
                    if (enemy.tag == "enemy"){
                    enemy.GetComponent<HealthScript>().hp -= 30;

                    }
                        }

            }
               
}
}
Vasiliy_IvanovichДата: Вторник, 20 Октября 2015, 22:57 | Сообщение # 15 | Тема: Вопрос-[ответ] по Unity
был не раз
Сейчас нет на сайте
Здравствуйте. Имеется вот такой скрипт врага (FPS), который, при достижении определенной дистанции относительно игрока, начинает игрока преследовать, а когда догоняет наносит удар. Проблема заключается в том, что когда подходишь на близкую дистанцию к врагу сзади, то враг разворачивается не плавно, а моментально. Как сделать чтобы враг поворачивался плавно?

Код
public class Zombie : MonoBehaviour {
        Animator animator;
        NavMeshAgent agent;
        GameObject player;

        public float visible = 15f;
        public float angleV = 180f;
        public float distance;
        public Quaternion look;

        void Start () {
                animator = GetComponent<Animator> ();
                agent = GetComponent<NavMeshAgent> ();
                player = GameObject.FindGameObjectWithTag ("Player");
        }
       

        void Update () {
                if (player != null) {

                        distance = Vector3.Distance(transform.position, player.transform.position);

                        look = Quaternion.LookRotation(player.transform.position - transform.position);

                        float angle = Quaternion.Angle(transform.rotation, look);

                            if(angle < angleV)
                    {  
                    
                    RaycastHit hit;

                    Ray ray = new Ray(transform.position + Vector3.up*2, player.transform.position - transform.position + Vector3.down);
                    Debug.DrawRay(transform.position + Vector3.up*2, player.transform.position - transform.position + Vector3.down);
                    
                    if(Physics.Raycast(ray, out hit, visible))
                    
                    {
                    if(hit.transform.gameObject == player && distance < visible && distance >= 3.8f)
                    {
                    animator.SetBool ("attack", false);
                    agent.destination = player.transform.position;
                    }

                    if(hit.transform.gameObject == player && distance < 3.8f)
                    {
                    Vector3 pos = player.transform.position;
                    pos.y = transform.position.y;
                    transform.LookAt(pos);
                    agent.stoppingDistance = 3.5f;
                    animator.SetBool ("attack", true);
                    }

                    }

                    }
}
}
  • Страница 1 из 1
  • 1
Поиск:

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