Работающие скрипты для Unity, колекция.

Программирование на Юнити.

Работающие скрипты для Unity, колекция.

Сообщение Левш@ 14 ноя 2009, 00:44

Хочу в первую очередь поблагодарить всех кто помогал мне в моих первых шагах програмирования! Спасибо!
Начало что то получаться и стало понятным как это вообще выглядет. :)
Решил создать такую тему для новичков, предлагаю всем Unцам выкладывать сюда примеры своих кодов и работающие проверенные скрипты
c кратким описанием функций.
Думаю будет очень полезно как примеры и не только. Разумеется то что не секретно. :)
Выкладываю свои наработки, доработанный скрипт FPSwalker.

Код: Выделить всё
var speed = 10.0;
var jumpSpeed = 8.0;
var gravity = 20.0;
var runSpeed = 2.0;
var sitSpeed = 0.3;
private var moveDirection = Vector3.zero;
private var grounded : boolean = false;

function FixedUpdate() {
   if (grounded) {
      // We are grounded, so recalculate movedirection directly from axes
      moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
      moveDirection = transform.TransformDirection(moveDirection);
      moveDirection *= speed;
      
   if (Input.GetButton ("Jump")) {
         moveDirection.y = jumpSpeed;
         transform.localScale.y = 1;
      }   
   
    if (Input.GetButton ("run")) {
         moveDirection *= runSpeed;
         transform.localPosition.y = 2.1;
         transform.localScale.y = 1;
         }
         
   if (Input.GetButton ("sit")) {
         transform.localScale.y = 0.5;
         moveDirection *= sitSpeed;
         }
   
   }

   // Apply gravity
   moveDirection.y -= gravity * Time.deltaTime;
   
   // Move the controller
   var controller : CharacterController = GetComponent(CharacterController);
   var flags = controller.Move(moveDirection * Time.deltaTime);
   grounded = (flags & CollisionFlags.CollidedBelow) != 0;
}

@script RequireComponent(CharacterController)


Добавлено:
1. Режим бега., 2. Приседание., 3. Медленная ходьба (красться).

Доработанный скрипт MachineGun.

Код: Выделить всё
var soundFire : AudioClip;
var soundReload : AudioClip;
var range = 100.0;
var fireRate = 0.05;
var force = 10.0;
var damage = 5.0;
var bulletsPerClip = 30;
var clips = 20;
var waitTime = 0.5;
var reloadTime = 2.6;
private var hitParticles : ParticleEmitter;
var muzzleFlash : Renderer;
private var bulletsLeft : int = 0;
private var nextFireTime = 0.0;
private var m_LastFrameShot = -1;

function Start () {
   hitParticles = GetComponentInChildren(ParticleEmitter);
   
   // We don't want to emit particles all the time, only when we hit something.
   if (hitParticles)
      hitParticles.emit = false;
   bulletsLeft = bulletsPerClip;
}

function LateUpdate() {
       audio.clip = soundFire;
   if (muzzleFlash) {
      // We shot this frame, enable the muzzle flash
      if (m_LastFrameShot == Time.frameCount) {
         animation.CrossFade("fire");
         audio.clip = soundFire;
         audio.Play();
         muzzleFlash.transform.localRotation = Quaternion.AngleAxis(Random.value * 360, Vector3.forward);
         muzzleFlash.enabled = true;
         
       
      } else {
      // We didn't, disable the muzzle flash
         
         animation.CrossFade("idle");
         muzzleFlash.enabled = false;
         enabled = false;
         
         
      }
   }
}

function Fire () {
   if (bulletsLeft == 0)
      return;
   
   // If there is more than one bullet between the last and this frame
   // Reset the nextFireTime
   if (Time.time - fireRate > nextFireTime)
      nextFireTime = Time.time - Time.deltaTime;
   
   // Keep firing until we used up the fire time
   while( nextFireTime < Time.time && bulletsLeft != 0) {
      FireOneShot();
      nextFireTime += fireRate;
   }
}

function FireOneShot () {
   var direction = transform.TransformDirection(Vector3.forward);
   var hit : RaycastHit;
   
   // Did we hit anything?
   if (Physics.Raycast (transform.position, direction, hit, range)) {
      // Apply a force to the rigidbody we hit
      if (hit.rigidbody)
         hit.rigidbody.AddForceAtPosition(force * direction, hit.point);
      
      // Place the particle system for spawing out of place where we hit the surface!
      // And spawn a couple of particles
      if (hitParticles) {
         hitParticles.transform.position = hit.point;
         hitParticles.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
         hitParticles.Emit();
      }

      // Send a damage message to the hit object         
      hit.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
   }
   
   bulletsLeft--;

   // Register that we shot this frame,
   // so that the LateUpdate function enabled the muzzleflash renderer for one frame
   m_LastFrameShot = Time.frameCount;
   enabled = true;
   
   // Reload gun in reload Time   

    if (Input.GetButton ("reload"))
       Reload();
   
   
   if (bulletsLeft == 0)
      Reload();
   }

function Reload () {
     // Wait for reload time first - then add more bullets!
        yield WaitForSeconds(waitTime);
       animation.CrossFade("reload");
       yield WaitForSeconds(waitTime);
       audio.clip = soundReload;
       audio.Play();
       yield WaitForSeconds(reloadTime);
        animation.CrossFade("idle");
             
   // We have a clip left reload
   if (clips > 0) {
      clips--;
      bulletsLeft = bulletsPerClip;
   }
}

function GetBulletsLeft () {
   return bulletsLeft;
}


Добавлено:
1. Работа с двумя анимациями (idle и reload)., 2. Проигрывается два звука (при выстреле и при перезарядке).
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Работающие скрипты для Unity, колекция.

Сообщение Demedes 21 ноя 2009, 21:22

Как интегрировать в проект этот скрипт(FPS)? Я его добавил к First Person Controller префабу, но контроллер нормально двигаться не может.
Demedes
UNец
 
Сообщения: 20
Зарегистрирован: 18 ноя 2009, 19:19

Re: Работающие скрипты для Unity, колекция.

Сообщение Левш@ 24 ноя 2009, 14:02

Вот проектик с двумя выше скинутыми скриптами.

http://rapidshare.com/files/311480106/11.rar.html

Исходников к сожалению дать не могу. ;;)
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Работающие скрипты для Unity, колекция.

Сообщение Tolking 24 ноя 2009, 16:24

Стыдно давать? :)
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2718
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Работающие скрипты для Unity, колекция.

Сообщение ziat 24 ноя 2009, 17:00

в исходник скрипта не вникал, но глюки есть.
Если нажать одновременно прыжок и пробел то ГГ начинает плющить в прямом смысле слова.
Кроме того несовсем понятно как запрыгивать в окна(в дверь входть как-то не красиво))

Ещё вопрос интересный камера просто смещается вниз с моделькой рук или изменяется высота контроллера?
Всё понял действительно маштабируется


Просто самому предстоит реализовать нечто подобное.

На счёт приседа, пока только идея понижения камеры, и замены высокой модельки контролера низкой и обратно.
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Работающие скрипты для Unity, колекция.

Сообщение Serge 24 ноя 2009, 18:02

Слишком чувствительная мышь, при малейшем движении дергается. Если двигаться в лево или в право и при этом смотреть на дом, то картинка начинает дергаться. Вспышка при стрельбе прорисовывается не полностью.
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: Работающие скрипты для Unity, колекция.

Сообщение mp3 24 ноя 2009, 18:25

Если нажать одновременно прыжок и пробел
Мощная комбинация.

<<Левш@>>
Код: Выделить всё
Screen.showCursor = false;
Be straight, or go forward.
Аватара пользователя
mp3
Адепт
 
Сообщения: 1071
Зарегистрирован: 21 окт 2009, 23:50

Re: Работающие скрипты для Unity, колекция.

Сообщение ziat 24 ноя 2009, 18:34

Очепятался)
прыжок и сесть
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Работающие скрипты для Unity, колекция.

Сообщение Левш@ 24 ноя 2009, 18:46

Стыдно давать?

:) Ну во первых это не окончательная версия, но стыд тут не причем, я и так везде пишу что профан в прогинге.
Просто это наработки проекта и модели распространению не подлежат. Сорри.

На счёт приседа, пока только идея понижения камеры, и замены высокой модельки контролера низкой и обратно.

А чем массштабирование не устраивает?, просто FPC и оружие надо скалеить вместе.
У меня там еще скрипт компенсатор стоит, если нужно выложу.

Weapone_balans^

function Update () {
if (Input.GetButton ("sit")) {
transform.localScale.y = 2;
transform.localPosition.y = -0.23;
}

if (Input.GetButton ("Jump")) {
transform.localScale.y = 1;
transform.localPosition.y = -0.1;
}
if (Input.GetButton ("run")) {
transform.localScale.y = 1;
transform.localPosition.y = -0.1;
}
}


Cкрипт вешаю на префаб Weapones
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Работающие скрипты для Unity, колекция.

Сообщение Kann 25 ноя 2009, 15:12

а фотки будут ?
проект скомпилен под windows?
монстры есть ? AI с поиском пути им уже прикрутили ? если да то интересно услышать бы о реализации....
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Работающие скрипты для Unity, колекция.

Сообщение Левш@ 25 ноя 2009, 15:50

Kann писал(а):а фотки будут ?

Нет, зачем?
Kann писал(а):проект скомпилен под windows?

Да под винду.
Kann писал(а):монстры есть ? AI с поиском пути им уже прикрутили ?

Нет, это не демка проекта, это пример развития стандартного скрипта.
Тут сделано только оружие, персонконтроллер и один персонаж у которого проигрывается весь трек анимации.
Скриптов на персонаже пока не висит. Ну и домик импортированный из макса.
Последний раз редактировалось Левш@ 25 ноя 2009, 16:13, всего редактировалось 1 раз.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Работающие скрипты для Unity, колекция.

Сообщение Neodrop 25 ноя 2009, 15:55

Как это "зачем"? К примеру я вообще ничего качать не буду, пока не увижу скрины. Как говорится : "Мальчики любят глазами". :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Работающие скрипты для Unity, колекция.

Сообщение Левш@ 25 ноя 2009, 15:59

К примеру я вообще ничего качать не буду, пока не увижу скрины.

Я как бы скрипты выкладывал, а не демку... :)
Ну ладно щас пару скринов сделаю.
[img]
http://s60.radikal.ru/i170/0911/22/f7629194aed3.jpg[/img]
Изображение
Изображение
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Работающие скрипты для Unity, колекция.

Сообщение Kann 25 ноя 2009, 16:23

про фотки спросил так как на работе MAC а посмотреть чо там навояли хочетцо =)
а демо будет ?
вообще вы делаете какой то проект ? так а что в "Кузню" не отписываете ? всем было бы наверно интересно посмотреть ....
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Работающие скрипты для Unity, колекция.

Сообщение Zaicheg 25 ноя 2009, 16:25

И как ты всё-таки выдрал модельку рук/оружия с анимацией? )
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 9