Стрельба - Форум Игроделов
Сб, 27 Апр 2024, 15:37 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » HELP & FAQ » Стрельба
Стрельба
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
Форум Игроделов » UNITY3D » HELP & FAQ » Стрельба
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024