2017-01-09 1 views
0

enter image description here 나는 '플레이어'3D 오브젝트와 '원'3D 오브젝트가 있습니다. 플레이어는 이미 서클을 향해 하나씩 이동할 수 있습니다.플레이어 앞에서 GameObject 생성 무한히

스페이스 바를 누르면 플레이어 앞에 무작위로 생성하려면 원이 필요합니다. 예를 들어 스페이스 바를 누른 다음 한 원이 생성되고 스페이스 바가 다시 누른 다음 다른 원이 생성됩니다. 무작위로 생성 마찬가지로

, 그것은 기존의 원의 반지름, 뒤에 있지 2 대 거리 어디에서나 앞의 원에서 예 (180도)

이 모든 텍스트가 질문을 할 수 있습니다에 산란 할 필요가 복잡 해 보이지만 실제로 필요한 것은 기존의 서클 앞에서 만든 또 다른 서클입니다.

플레이어 앞에서 생성하기 위해 플레이어의 임의의 임의의 회전을 사용할 수 있다면 도움이 될 것입니다.

이 내 코드는 완전히이 질문에 내 원래의 코드를 닦아 주시기 지금까지입니다 : 사전에

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class CreateObject : MonoBehaviour 
{ 

    public Vector3 playerPos; 
    public GameObject yourObject; 

    // Use this for initialization 
    void Start() 
    { 
     playerPos = playerPos.transform.position; 
     Instantiate(yourObject, new Vector3(playerPos.transform.position.x + 5, playerPos.transform.position.y, playerPos.transform.position.z), Quaternion.identity); 
    } 

    // Update is called once per frame 
    void Update() 
    { 
    } 
} 

감사합니다!

당신이 당신의 최대 및 최소 각도 사이에 최대 벡터의 주위에 당신의 플레이어를 회전 할 수
+0

오류 코드는 playerPos 앞에 정확히 하나의 개체 만 인스턴스화합니다. 실제로 원하는 코드/연구 코드를 작성하려고 시도 했습니까? – Alox

+1

다음은 몇 가지 링크입니다. https://docs.unity3d.com/ScriptReference/Random.Range.html https://docs.unity3d.com/ScriptReference/Input.GetKeyDown.html – Alox

+0

질문의 독자가 당신이 원하는 것을 설명하기위한 다이어그램이 될 수도 있습니다. 당신이 옳기 때문에 질문의 표현이 새로운 서클을 어떻게 배열 할 것인지 즉시 알 수있는 것은 아닙니다. – Serlite

답변

1

그런 다음 다음 RandomAngle=Random.Range(MinAngle,MaxAngle);

와 난수를 생성 할 수있는 임의의 각 부분에 대한 새로운 위치
를 찾기 위해 거리와 방향을 사용하여 그 어떤 정상적으로 플레이어 Upvector 주위를 회전
Quaternion.AngleAxis(RandomAngle, playerUpVector)
와 함께 사용, 난 당신이 위로 벡터에 사용되는 알고 해달라고하지만, 일반적으로 당신의 선수 방향으로 (playerLocalDirection을)를 곱하면 다음 Vector3.up
입니다 Vector3.forward

Vector3 newPos= myPos + Quaternion.AngleAxis(RandomAngle, playerUpVector) * playerLocalDirection * DistanceFromPlayer; 
+0

정말 감사합니다. – Nil

+0

그러나 적군은 무엇입니까? – Nil

+0

새 개체를 인스턴스화하는 데 사용해야하는 위치는 원하는대로 지정하십시오. –