forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Физика (http://forum.boolean.name/forumdisplay.php?f=168)
-   -   Проблема с дверьми (http://forum.boolean.name/showthread.php?t=16539)

RegIon 26.03.2012 15:25

Проблема с дверьми
 
Попытался сделать дверь, написал скрипт:
PHP код:

using UnityEngine;
using System.Collections;

public class 
door MonoBehaviour {
    public  
GameObject DoorObj;
    public  
Vector3 orentant;
    public 
bool open;
    public 
float maxAngle=90.0f;
    public 
float speed=1.0f;
    
bool inProcess=false;
    
float ang=0;
    
//float
    // Use this for initialization
    
void Start () {
        
        
    }
    
    
// Update is called once per frame
    
void Update (){
        if(
Input.GetButtonDown("Fire1")){
            
inProcess=true;
            
open=!open;
              if(
open)speed=-speed;
              if(!
open)speed=-speed;
        }
        if(
inProcess){
            
//DoorObj.collider.isTrigger=true;
            
DoorObj.transform.Rotate(orentant,speed*Time.deltaTime);
            if(
ang>maxAngle && speed>0){
                
inProcess=false;
            }
            
ang+=speed*Time.deltaTime;
            if(
ang+speed*Time.deltaTime<&& speed<0){
                
inProcess=false;
                
//DoorObj.collider.isTrigger=false;
            
}
        }
        
//Debug.Log("test");
    
}


Но никак не могу сделать так, чтоб дверь переставала открываться при соприкосновении с объектом.
Дверь статичный коллайдер, ГГ кинематический

pax 26.03.2012 17:11

Ответ: Проблема с дверьми
 
Я бы подумал о том, чтобы дверь повесить на петли (HingeJoint), сделать ее физической с RigidBody. Если она открывается, то придавать ей момент в одну сторону, если закрывается - в другую. Вероятно сделать ограничения для джоинта. Тогда если дверь будет закрываться физикой и встретит на пути колайдер - остановится.

RegIon 27.03.2012 10:21

Ответ: Проблема с дверьми
 
я тоже так решил, но как настроить этот HingeJoint(не крутиться, а только дрожит) и сместить точку вращения в один из краёв?

pax 27.03.2012 10:55

Ответ: Проблема с дверьми
 
Ну где петли, там и должна быть оранжевая стрелочка

Я как-то пример делал простенький http://forum.boolean.name/showthread.php?t=15843


Часовой пояс GMT +4, время: 12:31.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot