Уважаемые друзья!

Физика в Unity

Re: Гравипушка

Сообщение antonio 06 окт 2010, 13:10

http://forum.unity3d.com/threads/38144- ... gravitygun

Синтаксис:
Используется javascript
var catchRange = 30.0;
var holdDistance = 4.0;
var minForce = 1000;
var maxForce = 10000;
var forceChargePerSec = 3000;
var layerMask : LayerMask = -1;

enum GravityGunState { Free, Catch, Occupied, Charge, Release};
private var gravityGunState : GravityGunState = 0;
private var rigid : Rigidbody = null;
private var currentForce = minForce;

function FixedUpdate () {
   if(gravityGunState == GravityGunState.Free) {
      if(Input.GetButton("Fire1")) {
         var hit : RaycastHit;
         if(Physics.Raycast(transform.position, transform.forward, hit, catchRange, layerMask)) {
            if(hit.rigidbody) {
               rigid = hit.rigidbody;
               gravityGunState = GravityGunState.Catch;
               
               // for debuging, remove it
               print("force: " + currentForce);
            }
         }
      }
   }
   else if(gravityGunState == GravityGunState.Catch) {
      rigid.MovePosition(transform.position + transform.forward * holdDistance);
      if(!Input.GetButton("Fire1"))
         gravityGunState = GravityGunState.Occupied;
   }
   else if(gravityGunState == GravityGunState.Occupied) {
      rigid.MovePosition(transform.position + transform.forward * holdDistance);
      if(Input.GetButton("Fire1"))
         gravityGunState = GravityGunState.Charge;
   }
   else if(gravityGunState == GravityGunState.Charge) {
      rigid.MovePosition(transform.position + transform.forward * holdDistance);
      if(currentForce < maxForce) {
         currentForce += forceChargePerSec * Time.deltaTime;
      }
      else {
         currentForce = maxForce;
      }
      if(!Input.GetButton("Fire1"))
         gravityGunState = GravityGunState.Release;
         
      // for debuging, remove it
      print("force: " + currentForce);
   }
   else if(gravityGunState == GravityGunState.Release) {
      rigid.AddForce(transform.forward * currentForce);
      currentForce = minForce;
      gravityGunState = GravityGunState.Free;
     
      // for debuging, remove it
      print("");
   }
}

@script ExecuteInEditMode()
 
Аватара пользователя
antonio
UNIт
 
Сообщения: 132
Зарегистрирован: 03 ноя 2009, 15:42
Откуда: Смоленск

Re: Гравипушка

Сообщение Zyxer 06 окт 2010, 14:17

Уважаемые друзья! Команда PrintInstvud приветствует всех Вас!
Мы занимаемся производством Киосков/Автоматов позволяющих печатать фото из Instagram! - start.printinstvud.ru/?u=vk_50

Мы - команда молодых людей, которые любят и ценят время! Каждый раз, когда мы прилетали с отдыха или приезжали со встречи с друзьями, нам хотелось оставить приятное воспоминание и, слава богу, уже 21-й век!
Zyxer
UNец
 
Сообщения: 35
Зарегистрирован: 10 сен 2010, 16:27

Пред.

Вернуться в PhysX

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1