Jump to content
Unity Insider Forum

Fahrstuhl problemchen


Pixorzist

Recommended Posts

moin , da ich ja mit meiner bunkertestplattform nicht zufrieden bin habe ich mal nach anleitung ein fahrstuhl gebastelt.

 

http://xc0d3.com/unity/elevator/

 

die problematik die besteht:

 

rauf gehts wunderbar geschmeidig .. supi!

runter ruckelts und dauert doch ne zeit länger.

 

woran könnte das liegen?

 

hier mal der code

 

elevatorup.js

var Player: Transform;
var Elevator: Transform;
var to: Vector3;
var from: Vector3;
var elespeed: int=5;
var boolswitch: updown;
var delay: int=2;
function OnTriggerStay(other: Collider){
boolswitch = FindObjectOfType (updown);
if (boolswitch.eleswitch == 1){
  if (Elevator.transform.position.y < to.y)
  {
  Player.parent = Elevator;
  Elevator.transform.Translate(Vector3.up * Time.deltaTime * elespeed);
  }
}
}

 

 

elevatordown.js

var Player: Transform;
var Elevator: Transform;
var to: Vector3;
var from: Vector3;
var elespeed: int=5;
var boolswitch: updown;
var delay: int=2;
function OnTriggerStay(other: Collider){
boolswitch = FindObjectOfType (updown);
if (boolswitch.eleswitch == 2){
  if (Elevator.transform.position.y > to.y)
  {
 Player.parent = Elevator;
  Elevator.transform.Translate(Vector3.down * Time.deltaTime * elespeed);
  }
}
}

 

übersehe ich da was ganz wichtiges?

 

 

grüße pixi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab da mal was zusammengebastelt, vlt als orientierung?

Würd mich mal interessieren obs b ei dir ruckelt :)

 

 using UnityEngine;
using System.Collections;
public class Aufzug : MonoBehaviour {

//musste halt deine werte zuweisen, oder noch besser über transform.position zuweisen
public Vector3 oben = new Vector3(0,5,2);
public Vector3 unten = new Vector3(0,0,2);

public bool Fahrelos;
bool NachOben;

void OnTriggerEnter (Collider other) {
 //musst den Player natürlich als Player taggen; Vergleich weil sonst jeder Collider den Trigegr auslösen könnte
 if(other.transform.CompareTag("Player")){
  NachOben = !NachOben;
  Fahrelos = true;
 }
}

void FixedUpdate () {
 if(Fahrelos){
  if(NachOben){
transform.Translate(new Vector3 (0,Time.fixedDeltaTime,0));
ChekPos();
  }

  else {
transform.Translate(new Vector3 (0,-Time.fixedDeltaTime,0));
ChekPos();
  }
 }
}

void ChekPos() {
 if(transform.position.y > oben.y || transform.position.y < unten.y){
  Fahrelos = false;
 }
}
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich mag mich irren, aber wird beim "Runterfahren" das OnTriggerEnter/Stay event nicht ständig "unterbrochen" ausgelöst, da der Fahrstuhl nen Stück nach unten fährt, die Hitbox vom Rigidbody den Kontakt verliert, dann die gravity den Player nach unten drückt, wodurch er wieder den Fahrstuhl berührt und das Event auslöst, da aber die ?

 

Auch halte ich es für nicht vorteilhaft, den Player wie oben gleich als Child dem Fahrstuhl zuzuweisen, da sich ja der Player durchaus unabhängig vom Fahrstuhl bewegen kann (z.b Rausspringen).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich mag mich irren, aber wird beim "Runterfahren" das OnTriggerEnter/Stay event nicht ständig "unterbrochen" ausgelöst, da der Fahrstuhl nen Stück nach unten fährt, die Hitbox vom Rigidbody den Kontakt verliert, dann die gravity den Player nach unten drückt, wodurch er wieder den Fahrstuhl berührt und das Event auslöst, da aber die ?

 

Du irrst :P

 

Auch halte ich es für nicht vorteilhaft, den Player wie oben gleich als Child dem Fahrstuhl zuzuweisen, da sich ja der Player durchaus unabhängig vom Fahrstuhl bewegen kann (z.b Rausspringen).

Ist er auch nicht :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...