Помощь [JS]

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

Помощь [JS]

Сообщение Gamer_Jack5 15 апр 2017, 19:10

Здравствуйте, нужна помощь со скриптом.

Суть скрипта: Когда игрок подходит к шкафу, при нажатии на E, проигрывается анимация открытия дверей(У шкафа находиться триггер)

Синтаксис:
Используется javascript
var player : GameObject;
var animObject : Animation;
var anim : AnimationClip;  

private var enter : boolean;

function OnGUI(){
if(enter){

Style = GUI.skin.label;  
Style.normal.textColor = Color.black;
Style.fontSize = 26;
GUI.Label(new Rect(Screen.width/2 - 150, Screen.height - 100, 500, 50), "Нажмите E чтобы открыть шкаф");
}
}

function OnTriggerEnter (other : Collider){
if (other.gameObject.tag == "Player") {
enter = true;

}
}

function OnTriggerExit (other : Collider){
if (other.gameObject.tag == "Player") {
enter = false;
}

}


   
         
function OnTriggerStay (other : Collider)  {      
     if (Input.GetKeyDown("e"))  {  
        animObject.GetComponent.<Animation>().clip = anim;      
        animObject.Play();        
     }  
 }
 

 
Gamer_Jack5
UNец
 
Сообщения: 39
Зарегистрирован: 04 апр 2017, 20:09

Re: Помощь [JS]

Сообщение Kabanelloo 23 апр 2017, 02:15

Не используй анимации для открытия дверей. Так не кто не делает. За программируй что бы двери открывались. Ибо ты замучаешься писать код для каждой двери ))

есть много документации и уроков в интернете по открыванию дверей. Банальные анимации с трансформацией нужно программировать.

Это не JS, это C# но там можно узнать как это реализовать.
https://www.youtube.com/watch?v=zrrgdlF3U28

Вот ребенок объясняет как запрограммировать дверь JS
https://www.youtube.com/watch?v=uk7BDpP1zYc

Вот я сам когда-то по этому уроку проходился JS от сюда и начинай копать.
https://www.youtube.com/watch?v=vfL7kQeZtic

этот код из урока выше.
Синтаксис:
Используется javascript
//Make an empty game object and call it "Door"
//Rename your 3D door model to "Body"
//Parent a "Body" object to "Door"
//Make sure thet a "Door" object is in left down corner of "Body" object. The place where a Door Hinge need be
//Add a box collider to "Door" object and make it much bigger then the "Body" model, mark it trigger
//Assign this script to a "Door" game object that have box collider with trigger enabled
//Press "f" to open the door and "g" to close the door
//Make sure the main character is tagged "player"

// Smothly open a door
var smooth = 2.0;
var DoorOpenAngle = 90.0;
private var open : boolean;
private var enter : boolean;

private var defaultRot : Vector3;
private var openRot : Vector3;

function Start(){
defaultRot = transform.eulerAngles;
openRot = new Vector3 (defaultRot.x, defaultRot.y + DoorOpenAngle, defaultRot.z);
}

//Main function
function Update (){
if(open){
//Open door
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, openRot, Time.deltaTime * smooth);
}else{
//Close door
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, defaultRot, Time.deltaTime * smooth);
}

if(Input.GetKeyDown("f") && enter){
open = !open;
}
}

function OnGUI(){
if(enter){
GUI.Label(new Rect(Screen.width/2 - 75, Screen.height - 100, 150, 30), "Press 'F' to open the door");
}
}

//Activate the Main function when player is near the door
function OnTriggerEnter (other : Collider){
if (other.gameObject.tag == "Player") {
enter = true;
}
}

//Deactivate the Main function when player is go away from door
function OnTriggerExit (other : Collider){
if (other.gameObject.tag == "Player") {
enter = false;
}
}
 


Удачи!
Kabanelloo
UNITрон
 
Сообщения: 163
Зарегистрирован: 03 фев 2012, 21:55
Откуда: Kaliningrad/Crimea


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

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

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