Ich möchte meinen Spieler durch Objekte, die ihn für ein paar Sekunden treffen, unverwundbar machen, nachdem er in die Mitte des Spiels zurückgesetzt wurde, was bedeutet, dass ich ihm nichts antun will und ich möchte nicht, dass der Spieler für 5 zieht Sekunden, aber ich bin mir nicht sicher, wie ich das machen soll! Ich habe es gesucht, aber die Ergebnisse, die ich gefunden habe, stimmen nicht mit meinem Code überein. Wie auch immer das ist mein playermovement Skript:Unity2D: Wie mache ich meinen Player für X Zeit unverwundbar?
private Animator anim;
public float speed = 15f;
public static Vector3 target;
private bool touched;
private bool canmove;
Vector3 startPosition;
void Start() {
target = transform.position;
anim = GetComponent<Animator>();
}
void Update() {
if (Input.GetMouseButtonDown (0)) {
Vector3 mousePosition = Input.mousePosition;
mousePosition.z = 10; // distance from the camera
target = Camera.main.ScreenToWorldPoint(mousePosition);
target.z = transform.position.z;
}
transform.position = Vector3.MoveTowards (transform.position, target, speed * Time.deltaTime);
var movementDirection = (target - transform.position).normalized;
if (movementDirection.x != 0 || movementDirection.y != 0) {
anim.SetBool ("walking", false);
anim.SetFloat("SpeedX", movementDirection.x);
anim.SetFloat("SpeedY", movementDirection.y);
anim.SetBool ("walking", true);
}
}
void FixedUpdate() {
float LastInputX = transform.position.x - target.x;
float LastInputY = transform.position.y - target.y;
if (touched) {
if (LastInputX != 0 || LastInputY != 0) {
anim.SetBool ("walking", true);
if (LastInputX < 0) {
anim.SetFloat ("LastMoveX", 1f);
} else if (LastInputX > 0) {
anim.SetFloat ("LastMoveX", -1f);
} else {
anim.SetFloat ("LastMoveX", 0f);
}
if (LastInputY > 0) {
anim.SetFloat ("LastMoveY", 1f);
} else if (LastInputY < 0) {
anim.SetFloat ("LastMoveY", -1f);
} else {
anim.SetFloat ("LastMoveY", 0f);
}
}
}else{
touched = false;
anim.SetBool ("walking", false);
}
}
}
Und das ist mein Spieler Gesundheit Skript:
public int curHealth;
public int maxHealth = 3;
Vector3 startPosition;
bool invincible = false;
void Start()
{
curHealth = maxHealth;
startPosition = transform.position;
}
void Update()
{
if (curHealth > maxHealth) {
curHealth = maxHealth;
}
if (curHealth <= 0) {
Die();
}
}
void Die()
{
//Restart
Application.LoadLevel (Application.loadedLevel);
}
public void Damage(int dmg)
{
curHealth -= dmg;
Reset();
}
void Reset()
{
transform.position = startPosition;
PlayerMovement.target = startPosition;
}
}
So einfacher zu sein, ich möchte, dass meine machen Spieler, der nicht in der Mitte des Bildschirms zurückgesetzt werden kann, wird 5 Sekunden lang von Gegnern getroffen und Spieler, die meinen Spieler spielen, können sich 5 Sekunden lang nicht bewegen. Vielen Dank! (Mein Spiel ist ein topdown 2d klicken, um Spiel zu verschieben)
Danke wieder für die Beantwortung, eine Frage aber: Date ein bool? –
Nop, DateTime ist so, wie es eine Date Time angibt, was bedeutet, dass es der Typ ist, den wir verwenden, wenn wir die Zeit auswählen. wie int ist ganze Zahlen, Bool ist wahr/falsch usw. Ich habe eine Beschreibung von dem, was passiert. Also DateTime.Now ist die Zeit auf deinem Computer JETZT !!!! hehe –
Es tut mir leid, verstehe ich nicht wirklich, ersetze ich "DateTime.Now" mit der Zeit auf meinem Computer, oder bin ich Missverständnis. Danke aber –