Прошу помощи в Damage'е - Форум Игроделов
Чт, 31 Июл 2025, 05:55 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Прошу помощи в Damage'е
VolkOrievithДата: Пн, 19 Ноя 2012, 16:16 | Сообщение # 1
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
У меня тут есть неплохой скриптик стрельбы для FPS, но у меня никак не получяется сделать врага, то есть урон. sad
У меня unity почемуто не хочет распознавать тег объекта столкновения. angry может я что то не так делаю?
вот мой скрипт:
Code

var Helf = 100;
var UziBulletDamage = 10;

function DamageUziBullet(){
Helf -= UziBulletDamage;
if (Helf <1){
Destroy(gameObject);
}
}
function OnTriggerEnter (collider : Collider) {
if (collider.tag == ("UziBullet")){
     DamageUziBullet();
}
}


и вот скрипт оружия:
Code

var Bullet : Collider;
var Launcher : GameObject;
var BulletReload : float = 0.0;
var ReloadTime : float = 0.00;
var Body : Transform;
var Potrons = 10;
var MaxPotrons = 10;
var Zapas = 5;
var ReloadSound : GameObject;
var CanShoot = true;
var CanReload = true;
var CanCam = true;
var PritselTexture : GUITexture;
var Pritsel1 : Texture2D;
var Pritsel2 : Texture2D;
var WalkSound : GameObject;
var kamera : Camera;
var hit : RaycastHit;

function Update () {
  if (Input.GetButton("Fire1")){
    Fire();
    Bulletreload();
   }
  if (Input.GetKey("r")){
  Reload();
  }
  if (Input.GetButtonDown("Fire2")){
  kamera.camera.fieldOfView = 35;
  PritselTexture.texture = Pritsel1;
  kamera.animation.CrossFade("Camera1");
}
  if (Input.GetButtonUp("Fire2")){
  kamera.camera.fieldOfView = 60;
  PritselTexture.texture = Pritsel2;
  kamera.animation.CrossFade("Camera2");
}
if (Input.GetKey("w")){
  Body.animation.CrossFade("Walk");
  WalkSound.audio.Play();
  }
if (Input.GetKey("d")){
  Body.animation.CrossFade("Walk");
  }
if (Input.GetKey("s")){
  Body.animation.CrossFade("Walk");
  }
if (Input.GetKey("a")){
  Body.animation.CrossFade("Walk");
  }
}
function Fire(){
  if (CanShoot)
   if (Potrons > 0){
    if ( Physics.Raycast( Launcher.transform.position, Launcher.transform.forward, hit ) ) {    
  Instantiate( Bullet, hit.point, Quaternion.LookRotation( hit.normal ) );

}}}
function Reload(){
  if (CanReload){
   CanShoot = false;
   CanCam = false;
   CanReload = false;
   ReloadSound.audio.Play();
   Body.animation.CrossFade("Reload");
   yield WaitForSeconds(ReloadTime);
   Potrons = MaxPotrons;
   Zapas -= 1;
   CanReload = true;
   CanCam = true;
   CanShoot = true;
  }
}
function Bulletreload(){
  if (Input.GetButton("Fire1"))
  if (CanShoot)
   if (Potrons > 0){
    CanShoot = false;
    Launcher.audio.Play();
    Potrons -=1;
    CanCam = false;
    kamera.animation.CrossFade("Fire1");
    Body.animation.CrossFade("Fire");
   yield WaitForSeconds(BulletReload);
    CanCam = true;
    CanShoot = true;
  }
}
function OnGUI() {
GUI.Label(new Rect(30,430,250,30)," Патроны: " + Potrons + "/" + Zapas);
}  
 
СообщениеУ меня тут есть неплохой скриптик стрельбы для FPS, но у меня никак не получяется сделать врага, то есть урон. sad
У меня unity почемуто не хочет распознавать тег объекта столкновения. angry может я что то не так делаю?
вот мой скрипт:
Code

var Helf = 100;
var UziBulletDamage = 10;

function DamageUziBullet(){
Helf -= UziBulletDamage;
if (Helf <1){
Destroy(gameObject);
}
}
function OnTriggerEnter (collider : Collider) {
if (collider.tag == ("UziBullet")){
     DamageUziBullet();
}
}


и вот скрипт оружия:
Code

var Bullet : Collider;
var Launcher : GameObject;
var BulletReload : float = 0.0;
var ReloadTime : float = 0.00;
var Body : Transform;
var Potrons = 10;
var MaxPotrons = 10;
var Zapas = 5;
var ReloadSound : GameObject;
var CanShoot = true;
var CanReload = true;
var CanCam = true;
var PritselTexture : GUITexture;
var Pritsel1 : Texture2D;
var Pritsel2 : Texture2D;
var WalkSound : GameObject;
var kamera : Camera;
var hit : RaycastHit;

function Update () {
  if (Input.GetButton("Fire1")){
    Fire();
    Bulletreload();
   }
  if (Input.GetKey("r")){
  Reload();
  }
  if (Input.GetButtonDown("Fire2")){
  kamera.camera.fieldOfView = 35;
  PritselTexture.texture = Pritsel1;
  kamera.animation.CrossFade("Camera1");
}
  if (Input.GetButtonUp("Fire2")){
  kamera.camera.fieldOfView = 60;
  PritselTexture.texture = Pritsel2;
  kamera.animation.CrossFade("Camera2");
}
if (Input.GetKey("w")){
  Body.animation.CrossFade("Walk");
  WalkSound.audio.Play();
  }
if (Input.GetKey("d")){
  Body.animation.CrossFade("Walk");
  }
if (Input.GetKey("s")){
  Body.animation.CrossFade("Walk");
  }
if (Input.GetKey("a")){
  Body.animation.CrossFade("Walk");
  }
}
function Fire(){
  if (CanShoot)
   if (Potrons > 0){
    if ( Physics.Raycast( Launcher.transform.position, Launcher.transform.forward, hit ) ) {    
  Instantiate( Bullet, hit.point, Quaternion.LookRotation( hit.normal ) );

}}}
function Reload(){
  if (CanReload){
   CanShoot = false;
   CanCam = false;
   CanReload = false;
   ReloadSound.audio.Play();
   Body.animation.CrossFade("Reload");
   yield WaitForSeconds(ReloadTime);
   Potrons = MaxPotrons;
   Zapas -= 1;
   CanReload = true;
   CanCam = true;
   CanShoot = true;
  }
}
function Bulletreload(){
  if (Input.GetButton("Fire1"))
  if (CanShoot)
   if (Potrons > 0){
    CanShoot = false;
    Launcher.audio.Play();
    Potrons -=1;
    CanCam = false;
    kamera.animation.CrossFade("Fire1");
    Body.animation.CrossFade("Fire");
   yield WaitForSeconds(BulletReload);
    CanCam = true;
    CanShoot = true;
  }
}
function OnGUI() {
GUI.Label(new Rect(30,430,250,30)," Патроны: " + Potrons + "/" + Zapas);
}  

Автор - VolkOrievith
Дата добавления - 19 Ноя 2012 в 16:16
ЛевшаДата: Пн, 19 Ноя 2012, 17:15 | Сообщение # 2
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Quote (VolkOrievith)
if (collider.tag == ("UziBullet"))

if (collider.gameObject.tag == "UziBullet")


X.cor.R (Prologue)
 
Сообщение
Quote (VolkOrievith)
if (collider.tag == ("UziBullet"))

if (collider.gameObject.tag == "UziBullet")

Автор - Левша
Дата добавления - 19 Ноя 2012 в 17:15
VolkOrievithДата: Пн, 19 Ноя 2012, 17:50 | Сообщение # 3
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
Незнаю почему, но не работает! angry и мне это порядком надоело! angry >( я иза этого проэкт бросил. angry angry angry
Зачем его дальше делать, если без урона никак?
 
СообщениеНезнаю почему, но не работает! angry и мне это порядком надоело! angry >( я иза этого проэкт бросил. angry angry angry
Зачем его дальше делать, если без урона никак?

Автор - VolkOrievith
Дата добавления - 19 Ноя 2012 в 17:50
seamanДата: Вт, 20 Ноя 2012, 08:36 | Сообщение # 4
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Если при первом затыке бросать проект, то лучше вообще не начинать.
По делу.
Что значит "Не работает?" Ошибки есть? Знакомо такое - Debug.Log? Можете использовать его? Что выдает в логе?
 
СообщениеЕсли при первом затыке бросать проект, то лучше вообще не начинать.
По делу.
Что значит "Не работает?" Ошибки есть? Знакомо такое - Debug.Log? Можете использовать его? Что выдает в логе?

Автор - seaman
Дата добавления - 20 Ноя 2012 в 08:36
ЛевшаДата: Вт, 20 Ноя 2012, 09:38 | Сообщение # 5
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Quote (VolkOrievith)
Незнаю почему, но не работает!

Cкорее всего коллайдеры на пулях малы, а скорость большая и пули пролетают сквозь обьект не успев зафиксировать попадание.
Физика в Юнити далеко не идеальна. smile Иногда приходиться извращаться.

Quote (VolkOrievith)
я иза этого проект бросил

biggrin


X.cor.R (Prologue)
 
Сообщение
Quote (VolkOrievith)
Незнаю почему, но не работает!

Cкорее всего коллайдеры на пулях малы, а скорость большая и пули пролетают сквозь обьект не успев зафиксировать попадание.
Физика в Юнити далеко не идеальна. smile Иногда приходиться извращаться.

Quote (VolkOrievith)
я иза этого проект бросил

biggrin

Автор - Левша
Дата добавления - 20 Ноя 2012 в 09:38
VolkOrievithДата: Ср, 21 Ноя 2012, 14:58 | Сообщение # 6
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
у меня пуля не летает, а появляется в точке столкновения рейкаста с коллидером.
Quote (Левша)
Физика в Юнити далеко не идеальна

это точно!
у меня самолеты сквозь terrian пролетают biggrin
Quote (seaman)
Если при первом затыке бросать проект, то лучше вообще не начинать.

я его не совсем бросил, а "приостановил".

Добавлено (21.11.2012, 14:58)
---------------------------------------------
Quote (seaman)
Что значит "Не работает?" Ошибки есть?
в том то и дело, что ошибок нет.


Сообщение отредактировал VolkOrievith - Ср, 21 Ноя 2012, 14:59
 
Сообщениеу меня пуля не летает, а появляется в точке столкновения рейкаста с коллидером.
Quote (Левша)
Физика в Юнити далеко не идеальна

это точно!
у меня самолеты сквозь terrian пролетают biggrin
Quote (seaman)
Если при первом затыке бросать проект, то лучше вообще не начинать.

я его не совсем бросил, а "приостановил".

Добавлено (21.11.2012, 14:58)
---------------------------------------------
Quote (seaman)
Что значит "Не работает?" Ошибки есть?
в том то и дело, что ошибок нет.

Автор - VolkOrievith
Дата добавления - 21 Ноя 2012 в 14:58
DrogenyaДата: Ср, 21 Ноя 2012, 22:21 | Сообщение # 7
Нет аватара
 
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Offline
VolkOrievith, с телефона не особо удобно смотретьс крипт, так что смразу спрошу: я атк понимаю, у тебя стрельба не через Raycast-систему, ведь так? а почему не сделать стрельбу именно по ней? всё же намного проще станет. Да, и уроков много - посмотришь готовые скрипты, разберешься, напишешь/перепишешь под себя.
 
СообщениеVolkOrievith, с телефона не особо удобно смотретьс крипт, так что смразу спрошу: я атк понимаю, у тебя стрельба не через Raycast-систему, ведь так? а почему не сделать стрельбу именно по ней? всё же намного проще станет. Да, и уроков много - посмотришь готовые скрипты, разберешься, напишешь/перепишешь под себя.

Автор - Drogenya
Дата добавления - 21 Ноя 2012 в 22:21
VolkOrievithДата: Чт, 22 Ноя 2012, 12:48 | Сообщение # 8
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
Drogenya, Через Raycast
Quote (VolkOrievith)
if ( Physics.Raycast( Launcher.transform.position, Launcher.transform.forward, hit ) ) {
Instantiate( Bullet, hit.point, Quaternion.LookRotation( hit.normal ) );

вот он.
Посоветуйте плиз нормальный туториал с проектом.


Сообщение отредактировал VolkOrievith - Чт, 22 Ноя 2012, 12:48
 
СообщениеDrogenya, Через Raycast
Quote (VolkOrievith)
if ( Physics.Raycast( Launcher.transform.position, Launcher.transform.forward, hit ) ) {
Instantiate( Bullet, hit.point, Quaternion.LookRotation( hit.normal ) );

вот он.
Посоветуйте плиз нормальный туториал с проектом.

Автор - VolkOrievith
Дата добавления - 22 Ноя 2012 в 12:48
seamanДата: Чт, 22 Ноя 2012, 15:39 | Сообщение # 9
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Часть пули инстанцируется внутри коллайдера => не регистрируется столкновение ее с коллайдером.
 
СообщениеЧасть пули инстанцируется внутри коллайдера => не регистрируется столкновение ее с коллайдером.

Автор - seaman
Дата добавления - 22 Ноя 2012 в 15:39
VolkOrievithДата: Пт, 23 Ноя 2012, 11:14 | Сообщение # 10
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
А! Понял. Надо делать OnCollisionEnter?
 
СообщениеА! Понял. Надо делать OnCollisionEnter?

Автор - VolkOrievith
Дата добавления - 23 Ноя 2012 в 11:14
seamanДата: Пт, 23 Ноя 2012, 11:29 | Сообщение # 11
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Я вот не понял - зачем Вы ее создаете в месте попадания? Смысл? Если Вы хотите видеть пулю - нужно создавать ее в месте вылета из оружия и отправлять в полет к месту попадания. Если Вы ее создали в месте попадания - Вы ее не увидите. Значит Вам не нужно видеть пулю. Но если так - зачем ее вообще создавать?
 
СообщениеЯ вот не понял - зачем Вы ее создаете в месте попадания? Смысл? Если Вы хотите видеть пулю - нужно создавать ее в месте вылета из оружия и отправлять в полет к месту попадания. Если Вы ее создали в месте попадания - Вы ее не увидите. Значит Вам не нужно видеть пулю. Но если так - зачем ее вообще создавать?

Автор - seaman
Дата добавления - 23 Ноя 2012 в 11:29
VolkOrievithДата: Пт, 23 Ноя 2012, 19:54 | Сообщение # 12
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
Я не знаю других методов для урона, кроме OnCollisionEnter и OnTriggerEnter.
Если Вы мне посоветуете другие способы, я буду очень рад.
Я пробовал создавать пулю возле ствола и отправлять её по адресу, но почему то скрипт игнорировал некоторые строки.


Сообщение отредактировал VolkOrievith - Пт, 23 Ноя 2012, 19:58
 
СообщениеЯ не знаю других методов для урона, кроме OnCollisionEnter и OnTriggerEnter.
Если Вы мне посоветуете другие способы, я буду очень рад.
Я пробовал создавать пулю возле ствола и отправлять её по адресу, но почему то скрипт игнорировал некоторые строки.

Автор - VolkOrievith
Дата добавления - 23 Ноя 2012 в 19:54
igoryanДата: Вс, 02 Дек 2012, 12:46 | Сообщение # 13
Нет аватара
 
Сообщений: 6
Награды: 0
Репутация: 0
Статус: Offline
Доброго времени суток! Вопрос может уже и не актуален, но я делал это так:

1. Создаю префаб с объектом снаряда
2. На объект вешаю rigidbody и скрипт, в котором делаю:
if (Physics.Raycast (transform.position, transform.TransformDirection(Vector3.forward), out hit, 1)) {
obj = hit.collider.gameObject;
if(obj.tag == "Enemy"){
..............................
}
}
3. Создаю дочерний, от дула орудия, пустой объект в месте, из которого ЯКОБЫ должен вылететь снаряд, на который вешаю скрипт опроса нажатия клавиши "ОГОНЬ!!!"
и при true событии создаю из префаба объект снаряда и даю ему AddForce.
4. Работая, скрипт из п.2 дает ссыль на объект, в которм уменьшаем HP.

ps У меня все работает.
 
СообщениеДоброго времени суток! Вопрос может уже и не актуален, но я делал это так:

1. Создаю префаб с объектом снаряда
2. На объект вешаю rigidbody и скрипт, в котором делаю:
if (Physics.Raycast (transform.position, transform.TransformDirection(Vector3.forward), out hit, 1)) {
obj = hit.collider.gameObject;
if(obj.tag == "Enemy"){
..............................
}
}
3. Создаю дочерний, от дула орудия, пустой объект в месте, из которого ЯКОБЫ должен вылететь снаряд, на который вешаю скрипт опроса нажатия клавиши "ОГОНЬ!!!"
и при true событии создаю из префаба объект снаряда и даю ему AddForce.
4. Работая, скрипт из п.2 дает ссыль на объект, в которм уменьшаем HP.

ps У меня все работает.

Автор - igoryan
Дата добавления - 02 Дек 2012 в 12:46
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025