적의 위치를 가리키는 화살표 정보
개시하다
나는 게임에서 적의 위치를 알려줄 수 있는 것을 만들 것이다.
대충 이런 느낌.
규격.
이루어지다
차리다
먼저
- 유저
- 표적을 지시하는 적이 된다
- 화살표
- 화살표 아버지의 게임 개체
준비
더구나
바닥을 덧붙여서 플레이어의 아이에게 카메라를 놓는 게 좋을 것 같아요.
이렇게 되면 괜찮아!
코드
우선 플레이어를 이동하고 싶기 때문에 플레이어가 이동할 수 있는 스크립트를 적당히 만들어야 한다
시점 이동 등이 번거로워 쓰지 않았으니 원하는 만큼 사용하세요!!
복사 붙여넣기용으로 코드를 어떻게 넣는지
PlayerScript.csusing 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.csusing 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 등은 이해하기 쉬운 해설을 했으니 너에게 맡길 수도 있겠지(보기)
끝말
코드 자체가 매우 짧아서 간단하게 실현할 수 있다
요즘 재미있게 놀아서 관련 기사를 좀 쓰고 싶어요...
Reference
이 문제에 관하여(적의 위치를 가리키는 화살표 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryosebach/items/5d315ca72df95c368477
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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;
}
}
}
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);
}
}
코드 자체가 매우 짧아서 간단하게 실현할 수 있다
요즘 재미있게 놀아서 관련 기사를 좀 쓰고 싶어요...
Reference
이 문제에 관하여(적의 위치를 가리키는 화살표 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryosebach/items/5d315ca72df95c368477텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)