2017-11-30 26 views
0

내가하려는 것은 플레이어가 사자를 말하고, 다른 동물이 있습니다.parent 및 set localpositions 및 gameobjects에서 특정 로컬 위치로의 회전

내가 원했던 것은 플레이어가 목숨을 잃고 목을 입에 넣으면 적을 붙잡아 그를 데리고 갈 수 있다는 것입니다.

모든 적 동물은 목의 위치가 다르지만 모두 다릅니다. 모든 동물이 서로 다른 입장을 가지고 있기 때문에

Enemy1.SetParent(DragMouth.transform); 
    Enemy1.gameObject.transform.position = Enemy1.GetComponentInChildren<Neck>().transform.TransformPoint(0,0,0); 
    Enemy1.localRotation = Quaternion.identity; 

이 좀 작동하지만 그것이 잘 작동하지 않습니다

은 무엇 내가 가진 것은 이것이다.

적의 목을 "Dragmouth"위치로 설정하는 올바른 방법은 무엇입니까?

나는 단일성 btw를 사용하고 있습니다.

+0

그래서, 당신의 DragMouth (사자) gameobject는 모든 적의 목을 한 번에 잡을 것입니까? – Mazhar

+0

한 번에 적 1 명에서 오는 것이 아니라, 플레이어가 적을 죽인 다음 입에서 그를 붙잡고 다른 위치로 옮길 수있는 옵션입니다. –

+0

흠 ..... 아무 것도 없습니까? –

답변

0

자신의 위치에서 목 위치까지의 오프셋을 알고있는 동물에 스크립트를 추가 할 수 있습니다. 그런 다음 적군이 목표물을 잡으려고 할 때 기본 위치로 오프셋을 빼서 올바른 위치에 놓습니다. 그래서 (예제 코드는 회전 조정없이 작동합니다 주, 당신이 회전 :와 함께 작동하도록 좀 더 계산을해야 할 것이다) 같은 :

public class Lion : Monobehaviour 
{ 
    public Vector3 offsetToMouth 
    { 
     get { 
      return mouthObject.localPosition;   
     } 
    } 

    //Make a child object that is on the mouth position 
    //Reference to this object through unity inspector 
    public Transform mouthObject; 

    //The target that is currently in lions mouth 
    private Target currentTarget; 


    void Update() 
    { 
     var mouthPosition = transform.position + offsetToMouth; 
     var newPosition = mouthPosition - currentTarget.offsetToNeck; 
     currentTarget.gameObject.transform.position = newPosition; 
    } 
} 

public class Target : Monobehaviour 
{ 
    public Vector3 offsetToNeck 
    { 
     get { 
      return neckObject.localPosition;    
     } 
    } 

    //Make a child object that is on the neck position 
    //Reference to this object through unity inspector 
    public Transform neckObject; 
}