Стрельба
Armando Дата: Чт, 10 Окт 2013, 19:18 | Сообщение # 1
Сообщений: 39
Награды:
0
Репутация:
0
Статус: Offline
Здравствуйте. У меня опять есть вопрос. Я пытаюсь сделать стрельбу в своей игре. Сделал так что бы сферы вылетали из объекта по нажатию на ЛКМ. Но, появился ещё один вопрос. Сферы то вылетают. Но не от туда от куда надо. (Вы мне уже помогали по теме стрельбы), но как теперь сделать так то бы сфера вылетала не с координаты X (не ровно с красной стрелки, а чуть выше. Из дула. Если что вот код: Код
var projectile : Rigidbody; var speed = 20; function Update() { if( Input.GetButtonDown( "Fire1" ) ) { var instantiatedProjectile : Rigidbody = Instantiate( projectile, transform.position, transform.rotation ); instantiatedProjectile.velocity = transform.TransformDirection( Vector3( speed, 0, 0 ) ); Physics.IgnoreCollision( instantiatedProjectile. collider, transform.root.collider ); } }
Сообщение Здравствуйте. У меня опять есть вопрос. Я пытаюсь сделать стрельбу в своей игре. Сделал так что бы сферы вылетали из объекта по нажатию на ЛКМ. Но, появился ещё один вопрос. Сферы то вылетают. Но не от туда от куда надо. (Вы мне уже помогали по теме стрельбы), но как теперь сделать так то бы сфера вылетала не с координаты X (не ровно с красной стрелки, а чуть выше. Из дула. Если что вот код: Код
var projectile : Rigidbody; var speed = 20; function Update() { if( Input.GetButtonDown( "Fire1" ) ) { var instantiatedProjectile : Rigidbody = Instantiate( projectile, transform.position, transform.rotation ); instantiatedProjectile.velocity = transform.TransformDirection( Vector3( speed, 0, 0 ) ); Physics.IgnoreCollision( instantiatedProjectile. collider, transform.root.collider ); } }
Автор - Armando Дата добавления - 10 Окт 2013 в 19:18
seaman Дата: Чт, 10 Окт 2013, 19:25 | Сообщение # 2
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Ну, для того чтобы менять скрипт нужно хоть чуток понимать как он работает. Где сейчас Вы создаете сферы? В transform.position! Вот и меняйте это место.
Сообщение Ну, для того чтобы менять скрипт нужно хоть чуток понимать как он работает. Где сейчас Вы создаете сферы? В transform.position! Вот и меняйте это место. Автор - seaman Дата добавления - 10 Окт 2013 в 19:25
Armando Дата: Чт, 10 Окт 2013, 19:44 | Сообщение # 3
Сообщений: 39
Награды:
0
Репутация:
0
Статус: Offline
Ну этот скрипт я взял с туториала. Я примерно понимаю как он работает. И JavaScript вообще не знаю. Знаю не много C#.
Сообщение Ну этот скрипт я взял с туториала. Я примерно понимаю как он работает. И JavaScript вообще не знаю. Знаю не много C#. Автор - Armando Дата добавления - 10 Окт 2013 в 19:44
seaman Дата: Чт, 10 Окт 2013, 20:22 | Сообщение # 4
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Но Вы хоть поняли что менять то надо? Надо менять объект (или позицию объекта), на котором висит этот скрипт.
Сообщение Но Вы хоть поняли что менять то надо? Надо менять объект (или позицию объекта), на котором висит этот скрипт. Автор - seaman Дата добавления - 10 Окт 2013 в 20:22
Armando Дата: Пт, 11 Окт 2013, 16:40 | Сообщение # 5
Сообщений: 39
Награды:
0
Репутация:
0
Статус: Offline
Где менять я понял, а вот как?
Сообщение Где менять я понял, а вот как? Автор - Armando Дата добавления - 11 Окт 2013 в 16:40
Hunjeth Дата: Пт, 11 Окт 2013, 17:37 | Сообщение # 6
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
вот так Код
Instantiate(projectile, transform.rotation * (transform.position + 0.1 * Vector3.up), transform.rotation);
Код
Instantiate(projectile, transform.rotation * ((transform.position + 0.1 * Vector3.up) + 1 * Vector3.right), transform.rotation); Debug.DrawLine(transform.position, transform.rotation * ((transform.position + 0.1 * Vector3.up) + 1 * Vector3.right), Color.magenta);
Код
Instantiate(projectile, transform.rotation * (transform.position + Vector3(1, 0.1, 0)), transform.rotation);
Код
var firePos : Transform; Instantiate(projectile, firePos.position, transform.rotation);
Код
var yAngl : float; var xAngl : float = 45; var distance : float = 10; Debug.DrawRay(transform.position, (transform.rotation * (Quaternion.AngleAxis(yAngl, Vector3.up) * Quaternion.AngleAxis(xAngl, Vector3.right))) * (Vector3.up * distance), Color.magenta);
Сообщение отредактировал Hunjeth - Пт, 11 Окт 2013, 18:57
Сообщение вот так Код
Instantiate(projectile, transform.rotation * (transform.position + 0.1 * Vector3.up), transform.rotation);
Код
Instantiate(projectile, transform.rotation * ((transform.position + 0.1 * Vector3.up) + 1 * Vector3.right), transform.rotation); Debug.DrawLine(transform.position, transform.rotation * ((transform.position + 0.1 * Vector3.up) + 1 * Vector3.right), Color.magenta);
Код
Instantiate(projectile, transform.rotation * (transform.position + Vector3(1, 0.1, 0)), transform.rotation);
Код
var firePos : Transform; Instantiate(projectile, firePos.position, transform.rotation);
Код
var yAngl : float; var xAngl : float = 45; var distance : float = 10; Debug.DrawRay(transform.position, (transform.rotation * (Quaternion.AngleAxis(yAngl, Vector3.up) * Quaternion.AngleAxis(xAngl, Vector3.right))) * (Vector3.up * distance), Color.magenta);
Автор - Hunjeth Дата добавления - 11 Окт 2013 в 17:37
Armando Дата: Пт, 11 Окт 2013, 17:44 | Сообщение # 7
Сообщений: 39
Награды:
0
Репутация:
0
Статус: Offline
Спасибо, вроде работает. Только появилась проблема. Когда я двигаюсь шары летят как надо. Но как только я останавливаюсь. Они начинают летать на все 4 стороны.
Сообщение Спасибо, вроде работает. Только появилась проблема. Когда я двигаюсь шары летят как надо. Но как только я останавливаюсь. Они начинают летать на все 4 стороны. Автор - Armando Дата добавления - 11 Окт 2013 в 17:44
Hunjeth Дата: Пт, 11 Окт 2013, 18:44 | Сообщение # 8
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
забыл дописать transform.rotation : Код
Instantiate(projectile, transform.rotation * ((transform.position + 0.1 * Vector3.up) + 1 * Vector3.right), transform.rotation);
Сообщение отредактировал Hunjeth - Пт, 11 Окт 2013, 18:48
Сообщение забыл дописать transform.rotation : Код
Instantiate(projectile, transform.rotation * ((transform.position + 0.1 * Vector3.up) + 1 * Vector3.right), transform.rotation);
Автор - Hunjeth Дата добавления - 11 Окт 2013 в 18:44
Armando Дата: Пт, 11 Окт 2013, 21:01 | Сообщение # 9
Сообщений: 39
Награды:
0
Репутация:
0
Статус: Offline
Спасибо. Вроде работает.Добавлено (11 Окт 2013, 21:01) --------------------------------------------- А как исправить такое: когда я направляю прицел вниз. Он не стреляет. Ну сфер не видно. Они проваливаются под землюю
Сообщение Спасибо. Вроде работает.Добавлено (11 Окт 2013, 21:01) --------------------------------------------- А как исправить такое: когда я направляю прицел вниз. Он не стреляет. Ну сфер не видно. Они проваливаются под землюю
Автор - Armando Дата добавления - 11 Окт 2013 в 21:01
Hunjeth Дата: Пт, 11 Окт 2013, 21:40 | Сообщение # 10
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
пусти луч (Physics.Raycast) от точки до земли и проверь расстояние если у тебя танк огранич поворот башни
Сообщение отредактировал Hunjeth - Пт, 11 Окт 2013, 22:32
Сообщение пусти луч (Physics.Raycast) от точки до земли и проверь расстояние если у тебя танк огранич поворот башни Автор - Hunjeth Дата добавления - 11 Окт 2013 в 21:40
Armando Дата: Вт, 15 Окт 2013, 19:52 | Сообщение # 11
Сообщений: 39
Награды:
0
Репутация:
0
Статус: Offline
Ну у меня не танк. У меня обычный человек. А как сделать, что бы сферы появлялись чуть ближе к игроку. Что бы они не проваливались?Добавлено (15 Окт 2013, 19:52) --------------------------------------------- Мне кто нибудь поможет?
Сообщение Ну у меня не танк. У меня обычный человек. А как сделать, что бы сферы появлялись чуть ближе к игроку. Что бы они не проваливались?Добавлено (15 Окт 2013, 19:52) --------------------------------------------- Мне кто нибудь поможет?
Автор - Armando Дата добавления - 15 Окт 2013 в 19:52
seaman Дата: Вт, 15 Окт 2013, 21:28 | Сообщение # 12
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Я уже все написал. Перечитайте мое сообщение. Цитата
Надо менять объект (или позицию объекта), на котором висит этот скрипт.
Ваши сферы появляются в том месте где этот объект (по крайней мере до правки, которую предложил Hunjeth - я ее не смотрел) Сменив позицию этого объекта - Вы смените позицию, в которой появляются сферы.
Сообщение Я уже все написал. Перечитайте мое сообщение. Цитата
Надо менять объект (или позицию объекта), на котором висит этот скрипт.
Ваши сферы появляются в том месте где этот объект (по крайней мере до правки, которую предложил Hunjeth - я ее не смотрел) Сменив позицию этого объекта - Вы смените позицию, в которой появляются сферы. Автор - seaman Дата добавления - 15 Окт 2013 в 21:28
игнат Дата: Вт, 15 Окт 2013, 22:25 | Сообщение # 13
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
Как я понял - у вас сфера пролетает через объект?
Правила форума · участник GCC
Сообщение Как я понял - у вас сфера пролетает через объект? Автор - игнат Дата добавления - 15 Окт 2013 в 22:25
Armando Дата: Чт, 17 Окт 2013, 15:03 | Сообщение # 14
Сообщений: 39
Награды:
0
Репутация:
0
Статус: Offline
Цитата seaman (
)
Сменив позицию этого объекта - Вы смените позицию, в которой появляются сферы.
Да но сфера появляются спереди этого объекта. Если я его отодвину, его не будет видно камере. Которая стоит на FPC
Сообщение Цитата seaman (
)
Сменив позицию этого объекта - Вы смените позицию, в которой появляются сферы.
Да но сфера появляются спереди этого объекта. Если я его отодвину, его не будет видно камере. Которая стоит на FPCАвтор - Armando Дата добавления - 17 Окт 2013 в 15:03
Hunjeth Дата: Чт, 17 Окт 2013, 16:02 | Сообщение # 15
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
сделай тогда прозрачную сферу и меняй альфа канал от 0 до 255 есть еще 1 вариант 2 камеры но думаю с 1 можно обойтись
Сообщение сделай тогда прозрачную сферу и меняй альфа канал от 0 до 255 есть еще 1 вариант 2 камеры но думаю с 1 можно обойтись Автор - Hunjeth Дата добавления - 17 Окт 2013 в 16:02
Armando Дата: Чт, 17 Окт 2013, 16:16 | Сообщение # 16
Сообщений: 39
Награды:
0
Репутация:
0
Статус: Offline
Цитата Hunjeth (
)
сделай тогда прозрачную сферу и меняй альфа канал от 0 до 255
Как это сделать?
Сообщение Цитата Hunjeth (
)
сделай тогда прозрачную сферу и меняй альфа канал от 0 до 255
Как это сделать?Автор - Armando Дата добавления - 17 Окт 2013 в 16:16
Левша Дата: Чт, 17 Окт 2013, 16:47 | Сообщение # 17
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Цитата Armando (
)
сфера появляются спереди этого объекта. Если я его отодвину, его не будет видно камере.
Удочери основному обьекту пустышку (firePoint ) и генерируй свои сферы по ее координатам. Эту пустышку потом двигай локально как хочешь относительно родителя, тем самым регулируя свою стрельбу.
X.cor.R (Prologue)
Сообщение Цитата Armando (
)
сфера появляются спереди этого объекта. Если я его отодвину, его не будет видно камере.
Удочери основному обьекту пустышку (firePoint ) и генерируй свои сферы по ее координатам. Эту пустышку потом двигай локально как хочешь относительно родителя, тем самым регулируя свою стрельбу.Автор - Левша Дата добавления - 17 Окт 2013 в 16:47
Armando Дата: Чт, 17 Окт 2013, 17:26 | Сообщение # 18
Сообщений: 39
Награды:
0
Репутация:
0
Статус: Offline
Цитата Левша (
)
Удочери основному обьекту пустышку (firePoint) и генерируй свои сферы по ее координатам. Эту пустышку потом двигай локально как хочешь относительно родителя, тем самым регулируя свою стрельбу.
Спасибо за объяснение. Попробую так сделать. Если не получиться напишу сюда
Сообщение Цитата Левша (
)
Удочери основному обьекту пустышку (firePoint) и генерируй свои сферы по ее координатам. Эту пустышку потом двигай локально как хочешь относительно родителя, тем самым регулируя свою стрельбу.
Спасибо за объяснение. Попробую так сделать. Если не получиться напишу сюдаАвтор - Armando Дата добавления - 17 Окт 2013 в 17:26