[英]how to change player location ontriggerenter unity 2d c#
我正在嘗試制作一個帶有兩個角色的平台游戲,我想要它,所以當他們觸摸它時,它會進入下一個級別。 但是,它立即將我傳送到游戲結束幫助! 我是編碼新手,所以不要判斷大聲笑。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Mrglobtransform : MonoBehaviour
{
private int level;
public GameObject player;
private bool update;
private void Start()
{
level = 1;
}
IEnumerator waitforknees()
{
yield return new WaitForSeconds(0.4f);
update = false;
}
void knees()
{
if (update == true)
{
if (level == 2)
{
player.transform.position = new Vector3(-42.75f, -31.97f, 0);
GameObject.Find("Main Camera").GetComponent<cameramove>().player = 2;
}
if (level == 3)
{
player.transform.position = new Vector3(-7.43f, -196.2f, 0);
GameObject.Find("Main Camera").GetComponent<cameramove>().player = 2;
}
StartCoroutine(waitforknees());
return;
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.gameObject.layer == 8)
{
Debug.Log("sd hfjsgbchgbvds hgvn");
knees();
if (level == 1)
{
level = 2;
}
if (level == 2)
{
level = 3;
}
update = true;
}
}
}
忽略我沒有創意的名字。 我是編碼新手,我可能缺少一個簡單的修復方法。
所以這里有些問題。
首先
if (level == 1)
{
level = 2;
}
if (level == 2)
{
level = 3;
}
這意味着如果您在頂部的level
是1
或2
,那么最后總是3
,因為這兩種情況都將按順序執行。
你寧願做例如
level++;
// top it to 3
level = Mathf.Min(level, 3);
然后你在調用knees
后設置update = true
.. 所以很可能什么都不會發生。
為什么不簡單地做
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.gameObject.layer == 8)
{
Debug.Log("sd hfjsgbchgbvds hgvn");
level++;
// top it to 3
level = Mathf.Min(level, 3);
knees();
}
}
void knees()
{
switch(level)
{
case 2:
player.transform.position = new Vector3(-42.75f, -31.97f, 0);
GameObject.Find("Main Camera").GetComponent<cameramove>().player = 2;
break;
case 3:
player.transform.position = new Vector3(-7.43f, -196.2f, 0);
GameObject.Find("Main Camera").GetComponent<cameramove>().player = 2;
break;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.