2017-01-08 6 views
0

유니티 5.4를 사용하여 2D 게임을 뒤집습니다.내 플레이어를 따라 다니는 적군 스프라이트 회전

나는 4 개의 다른 스크립트로 탱크 적의 스프라이트를 가지고 있습니다. 하나는 이동하고 다른 하나는 플레이어를 따라 이동하고 나머지 하나는 HP를 제어하는 ​​데미지 핸들러 스크립트입니다. 문제는 내가 스프라이트가 대각선으로 움직이거나 반대 방향으로 향하는 게임을 할 때입니다. 스크린 샷). 내 스프라이트는 항상 플레이어에게 고정되어 있습니다.

enter image description here

내 플레이어를 다음과 같은 사항에 대해이 스크립트

enter image description here

using UnityEngine; 
using System.Collections; 

public class FollowPlayer : MonoBehaviour { 

public float rotSpeed = 90f; 
Transform player; 

void Update() { 
    if(player == null) 
    { 
     GameObject go = GameObject.Find("Player"); 

     if(go != null) 
     { 
      player = go.transform; 
     } 
    } 
    if (player == null) 
     return; 

    Vector3 dir = player.position - transform.position; 
    dir.Normalize(); 

    float zAngle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg; 

    Quaternion desiredRot= Quaternion.Euler(zAngle, 0, 0); 
    transform.rotation = Quaternion.RotateTowards(transform.rotation, desiredRot, rotSpeed * Time.deltaTime); 

}} 

내가 선수를 향한 내 스프라이트의 움직임에 문제가 코드의 일부이다 생각입니다 와

float zAngle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg; 

나는 그 선의 전체적인 의미를 거의 이해하지 못한다고 믿는다. 아니면 너무 복잡합니다.

추가 설명. 내 탱크 스프라이트가 내 플레이어를 따라야합니다 (항상 나를 때려 눕힐 때까지). 포탑은 날 쏠 때부터 내 선수를 향해 마주보고 있어야합니다. 내 총알은 올바른 방향으로 발사되지만 내 스프라이트는 내 선수쪽으로 올바르게 이동하지만 다른 방향으로 향합니다.

+0

질문을 읽지는 않았지만 'Mathf.Atan2 (dir.y, dir.x) * Mathf.Rad2Deg'는 각도가 AoB와 같은 각도를 의미합니다. 여기서 A = x, 0 및 B = x, y 및 o = 0,0 – Bijan

+0

문제는 분명하지 않습니다. 적 탱크가 항상 당신을 보길 원하십니까? –

+0

그것이 원점입니까? 그게 내 선수를 따라갈 지점이 어디 있는지 의미하니? 왜냐하면 나는 플로트 각도를 desiredRot에 사용하고 있기 때문이다. – Ryoukami

답변

0

다른 스프라이트는 서로 다른 전진 위치를 가질 수 있습니다. public float rotationFix = 90f;을 추가 한 다음 하단 근처 : float zAngle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg + rotationfix; 그리고 효과적인 회전을 조정하고 스프라이트의 앞으로 향하게하는 위치를 '고정'하는 데 사용하십시오.

조정은 게임 플레이 중에 관리자가 쉽게 할 수 있습니다.

+0

내 코드에서 변경 한 사항을 수정했지만 여전히 스프라이트의 방향이 잘못되었습니다. 회전 수정을위한 변수를 추가해도 아무런 변화가 없었습니다. 나는 다음 스크립트에서 모든 라인을 꼬집어서 거의 운동 스크립트에 문제가 있다고 생각하기 시작했다. 이것은 운동 스크립트 http://pastebin.com/GywaQT0U – Ryoukami

+0

입니다. 그래서 게임 플레이 도중 검사관에서 부동을 변경하면 아무 효과가 없습니까? – maksymiuk

+0

아니요, 그렇지 않습니다. / – Ryoukami