Результаты поиска
|
|
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); }
}
} } }
|
|
| |