Скрипт повреждения автомобиля. - Форум Игроделов
Вс, 09 Фев 2025, 18:50 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Скрипт повреждения автомобиля.
УпырьДата: Чт, 22 Дек 2011, 17:02 | Сообщение # 1
 
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
Как сделать так, что бы автомобиль повреждался (терял часть "здоровья") при столкновении с другими автомобилями и предметами?
Манипуляции со скриптами для "двуногих" не помогли.
Желательно просмотреть пример такого скрипта, а еще лучше - статью на подобную тему.

Quote (Shut)
Первые уроки как раз об этом

Нет, не об этом. У меня конкретная проблема, а увлечение буржуйскими видеороликами на отвлеченные темы.

Quote (seaman)
Уроков на все Ваши конкретные проблемы никогда не будет. Если будут описаны все возможные проблемы, значит будут сделаны все возможные игры. Зачем Вы тогда нужны? Так что изучайте существующие уроки и думайте.

Уроков не будет. А похожие примеры должны быть.


Сообщение отредактировал Упырь - Чт, 22 Дек 2011, 22:04
 
СообщениеКак сделать так, что бы автомобиль повреждался (терял часть "здоровья") при столкновении с другими автомобилями и предметами?
Манипуляции со скриптами для "двуногих" не помогли.
Желательно просмотреть пример такого скрипта, а еще лучше - статью на подобную тему.

Quote (Shut)
Первые уроки как раз об этом

Нет, не об этом. У меня конкретная проблема, а увлечение буржуйскими видеороликами на отвлеченные темы.

Quote (seaman)
Уроков на все Ваши конкретные проблемы никогда не будет. Если будут описаны все возможные проблемы, значит будут сделаны все возможные игры. Зачем Вы тогда нужны? Так что изучайте существующие уроки и думайте.

Уроков не будет. А похожие примеры должны быть.

Автор - Упырь
Дата добавления - 22 Дек 2011 в 17:02
ShutДата: Чт, 22 Дек 2011, 18:12 | Сообщение # 2
 
Сообщений: 608
Награды: 2
Репутация: 258
Статус: Offline
Первые уроки как раз об этом

Добавлено (22.12.2011, 18:12)
---------------------------------------------
Хотя нет,не совсем об этом,но суть показывается


Где арахисы - там и зима.
 
СообщениеПервые уроки как раз об этом

Добавлено (22.12.2011, 18:12)
---------------------------------------------
Хотя нет,не совсем об этом,но суть показывается


Автор - Shut
Дата добавления - 22 Дек 2011 в 18:12
seamanДата: Чт, 22 Дек 2011, 19:27 | Сообщение # 3
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Quote
Нет, не об этом. У меня конкретная проблема, а увлечение буржуйскими видеороликами на отвлеченные темы.

Уроков на все Ваши конкретные проблемы никогда не будет. Если будут описаны все возможные проблемы, значит будут сделаны все возможные игры. Зачем Вы тогда нужны? Так что изучайте существующие уроки и думайте.
 
Сообщение
Quote
Нет, не об этом. У меня конкретная проблема, а увлечение буржуйскими видеороликами на отвлеченные темы.

Уроков на все Ваши конкретные проблемы никогда не будет. Если будут описаны все возможные проблемы, значит будут сделаны все возможные игры. Зачем Вы тогда нужны? Так что изучайте существующие уроки и думайте.

Автор - seaman
Дата добавления - 22 Дек 2011 в 19:27
ЛевшаДата: Чт, 22 Дек 2011, 22:33 | Сообщение # 4
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Quote (Упырь)
Желательно просмотреть пример такого скрипта

Ну если тебе поможет то вот:

Code
function OnTriggerEnter (other : Collider) {
     if (other.gameObject.layer == 20) {
      other.SendMessageUpwards("CollisionDamage", collisionDamage, SendMessageOptions.DontRequireReceiver);
      CollisionDamage();
  }
}

Code
function CollisionDamage (collisionDamage) {
       if (condition > 0)
        condition -= collisionDamage;
    if (condition <= 0 && orderDeath == 1) {
        orderDeath = 0;
     Death();
    }
}

smile


X.cor.R (Prologue)
 
Сообщение
Quote (Упырь)
Желательно просмотреть пример такого скрипта

Ну если тебе поможет то вот:

Code
function OnTriggerEnter (other : Collider) {
     if (other.gameObject.layer == 20) {
      other.SendMessageUpwards("CollisionDamage", collisionDamage, SendMessageOptions.DontRequireReceiver);
      CollisionDamage();
  }
}

Code
function CollisionDamage (collisionDamage) {
       if (condition > 0)
        condition -= collisionDamage;
    if (condition <= 0 && orderDeath == 1) {
        orderDeath = 0;
     Death();
    }
}

smile

Автор - Левша
Дата добавления - 22 Дек 2011 в 22:33
СкептикДата: Пт, 23 Дек 2011, 01:02 | Сообщение # 5
Мыслитель
 
Сообщений: 5860
Награды: 48
Репутация: 1731
Статус: Offline
Скрипт из моей игры. Разберешся?

Code
var hitPoints = 100;  //наши жизни
var detonationDelay = 0.0; //задержка взрыва
var sparks : Transform; //искры
var explosion : Transform; //взрыв
var deadReplacement : Rigidbody; //труп
var guiskin : GUISkin;  //скин интерфейса
var endtext : Transform; //текст проигрыша

var deformation : float; //величина деформации кузова

function Update (){
  GetComponentInChildren(TextMesh).text = hitPoints.ToString();
}

function ApplyDamage (damage : float) //получили повреждения
{
  Instantiate (sparks, transform.position, transform.rotation); //издаем искры
   
  var body = GameObject.FindWithTag ("Body"); //находим кузов
  var mesh : Mesh = body.GetComponent(MeshFilter).mesh; //берем мешь кузова
     // Randomly change vertices
     var vertices = mesh.vertices; //берем вершины меша кузова
     for (var p in vertices)
     {
         p.x += Random.Range(-deformation, deformation) ; //мнем по всех осях
   p.y += Random.Range(-deformation, deformation) ;
   p.z += Random.Range(-deformation, deformation) ;
     }
     mesh.vertices = vertices;
     //mesh.RecalculateNormals();
   
   
  // We already have less than 0 hitpoints, maybe we got killed already?
  if (hitPoints <= 0.0) //если кончились жизни
   return; //убиваем
    
  hitPoints -= damage; //отнимаем жизни
  if (hitPoints <= 0.0) //если жизни не кончились
  {
   // Start emitting particles
   var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);  
   if (emitter)
    emitter.emit = true;

   Invoke("DelayedDetonate", detonationDelay);
  }
}

function DelayedDetonate ()
{
  BroadcastMessage ("Detonate");
}

function Detonate () //пришло время взрыва
{
  // Destroy ourselves
  Destroy(gameObject); //уничтожаем тачку
  Instantiate(endtext, transform.position, transform.rotation); //показываем текст проигрыша
   
  // Create the explosion
  if (explosion) //если взрыв указан
   Instantiate (explosion, transform.position, transform.rotation); //взрываем

  // If we have a dead barrel then replace ourselves with it!
  if (deadReplacement) //если труп указан
  {
   var dead : Rigidbody = Instantiate(deadReplacement, transform.position, transform.rotation); //создаем труп

   // For better effect we assign the same velocity to the exploded barrel
   dead.rigidbody.velocity = rigidbody.velocity; //и задаем ему скорость тачки
   dead.angularVelocity = rigidbody.angularVelocity;
  }
    
  // If there is a particle emitter stop emitting and detach so it doesnt get destroyed
  // right away
  var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);
  if (emitter)
  {
   emitter.emit = false;
   emitter.transform.parent = null;
  }
   
  //var start = GameObject.Find("Checkpoints/Finish");
  //transform.position.x = start.transform.position.x;
  //transform.position.z = start.transform.position.z;
  //transform.position.y += 7;
  //transform.eulerAngles = (Vector3(start.transform.localEulerAngles.x,start.transform.localEulerAngles.y,start.transform.localEulerAngles.z));
  //rigidbody.drag = 0.1;
  //Instantiate(spawn,transform.position, transform.rotation);  
  //collider.isTrigger = false;
  //hitPoints = 100.0;
}

function OnGUI() {  //показываем интерфейс
  if (guiskin != null) GUI.skin = guiskin; //с нашим скином
   GUILayout.BeginArea(new Rect(90, 55, 440, 150));
   GUILayout.Label("Целосность:" + " " + hitPoints.ToString()); //показываем количество жизней
   GUILayout.EndArea();
}

// We require the barrel to be a rigidbody, so that it can do nice physics
@script RequireComponent (Rigidbody) //требуем твердое тело


Фанат игр Max Payne и Fahrenheit.
 
СообщениеСкрипт из моей игры. Разберешся?

Code
var hitPoints = 100;  //наши жизни
var detonationDelay = 0.0; //задержка взрыва
var sparks : Transform; //искры
var explosion : Transform; //взрыв
var deadReplacement : Rigidbody; //труп
var guiskin : GUISkin;  //скин интерфейса
var endtext : Transform; //текст проигрыша

var deformation : float; //величина деформации кузова

function Update (){
  GetComponentInChildren(TextMesh).text = hitPoints.ToString();
}

function ApplyDamage (damage : float) //получили повреждения
{
  Instantiate (sparks, transform.position, transform.rotation); //издаем искры
   
  var body = GameObject.FindWithTag ("Body"); //находим кузов
  var mesh : Mesh = body.GetComponent(MeshFilter).mesh; //берем мешь кузова
     // Randomly change vertices
     var vertices = mesh.vertices; //берем вершины меша кузова
     for (var p in vertices)
     {
         p.x += Random.Range(-deformation, deformation) ; //мнем по всех осях
   p.y += Random.Range(-deformation, deformation) ;
   p.z += Random.Range(-deformation, deformation) ;
     }
     mesh.vertices = vertices;
     //mesh.RecalculateNormals();
   
   
  // We already have less than 0 hitpoints, maybe we got killed already?
  if (hitPoints <= 0.0) //если кончились жизни
   return; //убиваем
    
  hitPoints -= damage; //отнимаем жизни
  if (hitPoints <= 0.0) //если жизни не кончились
  {
   // Start emitting particles
   var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);  
   if (emitter)
    emitter.emit = true;

   Invoke("DelayedDetonate", detonationDelay);
  }
}

function DelayedDetonate ()
{
  BroadcastMessage ("Detonate");
}

function Detonate () //пришло время взрыва
{
  // Destroy ourselves
  Destroy(gameObject); //уничтожаем тачку
  Instantiate(endtext, transform.position, transform.rotation); //показываем текст проигрыша
   
  // Create the explosion
  if (explosion) //если взрыв указан
   Instantiate (explosion, transform.position, transform.rotation); //взрываем

  // If we have a dead barrel then replace ourselves with it!
  if (deadReplacement) //если труп указан
  {
   var dead : Rigidbody = Instantiate(deadReplacement, transform.position, transform.rotation); //создаем труп

   // For better effect we assign the same velocity to the exploded barrel
   dead.rigidbody.velocity = rigidbody.velocity; //и задаем ему скорость тачки
   dead.angularVelocity = rigidbody.angularVelocity;
  }
    
  // If there is a particle emitter stop emitting and detach so it doesnt get destroyed
  // right away
  var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);
  if (emitter)
  {
   emitter.emit = false;
   emitter.transform.parent = null;
  }
   
  //var start = GameObject.Find("Checkpoints/Finish");
  //transform.position.x = start.transform.position.x;
  //transform.position.z = start.transform.position.z;
  //transform.position.y += 7;
  //transform.eulerAngles = (Vector3(start.transform.localEulerAngles.x,start.transform.localEulerAngles.y,start.transform.localEulerAngles.z));
  //rigidbody.drag = 0.1;
  //Instantiate(spawn,transform.position, transform.rotation);  
  //collider.isTrigger = false;
  //hitPoints = 100.0;
}

function OnGUI() {  //показываем интерфейс
  if (guiskin != null) GUI.skin = guiskin; //с нашим скином
   GUILayout.BeginArea(new Rect(90, 55, 440, 150));
   GUILayout.Label("Целосность:" + " " + hitPoints.ToString()); //показываем количество жизней
   GUILayout.EndArea();
}

// We require the barrel to be a rigidbody, so that it can do nice physics
@script RequireComponent (Rigidbody) //требуем твердое тело

Автор - Скептик
Дата добавления - 23 Дек 2011 в 01:02
TushkaNДата: Вт, 15 Май 2012, 17:48 | Сообщение # 6
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
Господа у меня появился вопрос по использованию Mesh.
есть моделька А и та же моделька Б но покорёженная
с помощью Mesh можно перемещать вершины, но появляется проблема после экспорта с измененными позициями вершин в модель Б,количество вершин у модели меняется +-5% приблизительно и получается что модельки разные и изменив вершины по такому коду,они не совпадают задуманной траекторией.
Code
while (i < vertex.Length)  
{
       vertex[i] = (vertex_dam[i]);
i++;
}

код урезал но суть осталась, у меня там плавное смещение вершин, по этому мне не нужна замена Мэша.


TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.
 
СообщениеГоспода у меня появился вопрос по использованию Mesh.
есть моделька А и та же моделька Б но покорёженная
с помощью Mesh можно перемещать вершины, но появляется проблема после экспорта с измененными позициями вершин в модель Б,количество вершин у модели меняется +-5% приблизительно и получается что модельки разные и изменив вершины по такому коду,они не совпадают задуманной траекторией.
Code
while (i < vertex.Length)  
{
       vertex[i] = (vertex_dam[i]);
i++;
}

код урезал но суть осталась, у меня там плавное смещение вершин, по этому мне не нужна замена Мэша.

Автор - TushkaN
Дата добавления - 15 Май 2012 в 17:48
seamanДата: Вт, 15 Май 2012, 22:22 | Сообщение # 7
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
А вопрос то?
 
СообщениеА вопрос то?

Автор - seaman
Дата добавления - 15 Май 2012 в 22:22
TushkaNДата: Чт, 17 Май 2012, 02:25 | Сообщение # 8
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
вопрос, есть ли возможность деформации объекта с модели А в модель Б по мешам?

TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.
 
Сообщениевопрос, есть ли возможность деформации объекта с модели А в модель Б по мешам?

Автор - TushkaN
Дата добавления - 17 Май 2012 в 02:25
seamanДата: Чт, 17 Май 2012, 09:31 | Сообщение # 9
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Без замены меша морфинг возможен только при одинаковой топологии. Т.е. не только одно число верши, но и одинаковое их объединение в треугольники/
 
СообщениеБез замены меша морфинг возможен только при одинаковой топологии. Т.е. не только одно число верши, но и одинаковое их объединение в треугольники/

Автор - seaman
Дата добавления - 17 Май 2012 в 09:31
TushkaNДата: Пт, 18 Май 2012, 01:52 | Сообщение # 10
Нет аватара
 
Сообщений: 26
Награды: 0
Репутация: 6
Статус: Offline
плохо, потому что при экспорте не сохраняются идентичные данные что были в оригинале в 3д редакторе, ладно спасибо за разъяснение, придется выкручиваться и создавать деформацию заранее программно или в юнити сдвинуть меши и пересохранить как новую модельку, но все равно спасибо еще раз пойду думать.

TLT-GC
Жизнь тебе не фунт изюма, даже если ты изюм.
 
Сообщениеплохо, потому что при экспорте не сохраняются идентичные данные что были в оригинале в 3д редакторе, ладно спасибо за разъяснение, придется выкручиваться и создавать деформацию заранее программно или в юнити сдвинуть меши и пересохранить как новую модельку, но все равно спасибо еще раз пойду думать.

Автор - TushkaN
Дата добавления - 18 Май 2012 в 01:52
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025