Ich habe diesen Code unten, der einen berührten Spieler unter 3 Spielern kontrollieren konnte. Ich konnte es durch eine Art "Schummeln" implementieren, indem ich einen 3D-Würfel hinter einem 2D-Sprite anfügte, da mein Spiel in 2D sein sollte und es mir schwer fällt, es in 2D umzusetzen. Ich bin wirklich verwirrt, wie man es in 2D macht, weil ich die Parameter wirklich verwechsle.Convert 3D Raycast zu Raycast2D
Obwohl ich es bereits oben erwähnt implementiert habe, möchte ich es immer noch in reinem 2D implementieren. Und weil ich dieses Problem habe, wenn sich der ausgewählte Spieler bewegt, bewegt sich das Sprite schneller.
public GameObject target = null;
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update()
{
if(Input.touchCount > 0 || Input.GetTouch(0).phase == TouchPhase.Began)
{
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
Debug.DrawRay(ray.origin,ray.direction * 20,Color.red);
RaycastHit hit;
if(Physics.Raycast(ray, out hit,Mathf.Infinity))
{
Debug.Log(hit.transform.gameObject.name);
if(this.target != null){
SelectMove sm = this.target.GetComponent<SelectMove>();
if(sm != null){ sm.enabled = false; }
}
target = hit.transform.gameObject;
//Destroy(hit.transform.gameObject);
selectedPlayer();
}
}
}
void selectedPlayer(){
SelectMove sm = this.target.GetComponent<SelectMove>();
if(sm == null){
target.AddComponent<SelectMove>();
}
sm.enabled = true;
}
Sie suchen die 3D-Touch-Code 2D zu übersetzen? – Programmer
Ich meine, wie könnte ich es übersetzen? – kmf
Ich fand diesen Code in der Einheit Doku: 'öffentlichen statischen RaycastHit2D Raycast (Vector2 Ursprung, Vector2 Richtung, Floatabstand = Mathf.Infinity, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Unendlichkeit, float maxDepth = Mathf.Infinity); 'und im Beispielcode hat es nur 2 Parameter:' RaycastHit2D hit = Physics2D.Raycast (transform.position, -Vector2.up); '. Ich bin nicht wirklich gut darin, Dokumentationen zu verstehen. – kmf