적의 위치를 가리키는 화살표 정보

14424 단어 UnityC#

개시하다


나는 게임에서 적의 위치를 알려줄 수 있는 것을 만들 것이다.
대충 이런 느낌.

규격.

  • 화살표가 눈앞에 있다
  • 항상 적의 위치를 가리킨다
  • 이루어지다


    차리다


    먼저
    - 유저
    - 표적을 지시하는 적이 된다
    - 화살표
    - 화살표 아버지의 게임 개체
    준비
    더구나
    바닥을 덧붙여서 플레이어의 아이에게 카메라를 놓는 게 좋을 것 같아요.
    이렇게 되면 괜찮아!

    코드


    우선 플레이어를 이동하고 싶기 때문에 플레이어가 이동할 수 있는 스크립트를 적당히 만들어야 한다
    시점 이동 등이 번거로워 쓰지 않았으니 원하는 만큼 사용하세요!!
    복사 붙여넣기용으로 코드를 어떻게 넣는지
    PlayerScript.cs
    using UnityEngine;
    using System.Collections;
    
    public class PlayerScript : MonoBehaviour {
    
        float speed = 10;
    
        void Update () {
    
            if (Input.GetKey("a") && Input.GetKey("w")) {
                transform.position += (new Vector3 (-1, 0, 1)).normalized * Time.deltaTime * speed;
            }else if (Input.GetKey("a") && Input.GetKey("s")) {
                transform.position += (new Vector3 (-1, 0, -1)).normalized * Time.deltaTime * speed;
            }else if (Input.GetKey("d") && Input.GetKey("w")) {
                transform.position += (new Vector3 (1, 0, 1)).normalized * Time.deltaTime * speed;
            }else if (Input.GetKey("d") && Input.GetKey("s")) {
                transform.position += (new Vector3 (1, 0, -1)).normalized * Time.deltaTime * speed;
            }else if (Input.GetKey("a")) {
                transform.position += new Vector3 (-1, 0, 0) * Time.deltaTime * speed;
            }else if (Input.GetKey("d")) {
                transform.position += new Vector3 (1, 0, 0) * Time.deltaTime * speed;
            }else if (Input.GetKey("w")) {
                transform.position += new Vector3 (0, 0, 1) * Time.deltaTime * speed;
            }else if (Input.GetKey("s")) {
                transform.position += new Vector3 (0, 0, -1) * Time.deltaTime * speed;
            }
    
        }
    }
    
    다음 화살표가 가리키는 부분의 코드
    화살표를 넣는 게임Object를 만든 것은 자기 앞에 자주 화살표를 놓고 싶어서다.
    이렇게 하면 자신의 위치+transform.forward를 사용하면 유저에게 적합한 방향을 쉽게 실현할 수 있습니다.
    또 화살표는 플레이어와 적의 위치 사이의 각도로 적을 추적할 수 있다.
    실제 쓴 코드예요.
    ArrowScript.cs
    using UnityEngine;
    using System.Collections;
    
    public class ArrowScript : MonoBehaviour {
    
    
        [SerializeField] GameObject target;
        [SerializeField] GameObject player;
        [SerializeField] GameObject arrow;
    
        void Update () {
    
            transform.position =player.transform.position + player.transform.forward * 3 + Vector3.up * 0.4f;
            Vector2 vec2 = new Vector2 (target.transform.position.x - player.transform.position.x,
                               target.transform.position.z - player.transform.position.z);
    
            float r = Mathf.Atan2 (vec2.y, vec2.x);
            float angle = Mathf.Floor(r * 360 / (2 * Mathf.PI));
            arrow.transform.rotation = Quaternion.Euler(0, 90 - angle, 0);
    
        }
    }
    
    자신의 위치를 유저 앞에 두는 게 첫 번째예요.transform.position =player.transform.position + player.transform.forward * 3 + Vector3.up * 0.4f;
    .
    transform.forward 및 Vector 3.forward의 두 가지 측면을 알면 이쪽 처리가 쉬워질 거예요.
    다음은 적의 방향을 각도로 수입하는 부분이 남은 부분이다
    이 일대, 참고 기사 중 하나, 참고 기사 2 등은 이해하기 쉬운 해설을 했으니 너에게 맡길 수도 있겠지(보기)

    끝말


    코드 자체가 매우 짧아서 간단하게 실현할 수 있다
    요즘 재미있게 놀아서 관련 기사를 좀 쓰고 싶어요...

    좋은 웹페이지 즐겨찾기