2016-03-23 27 views
1

Unity 3D'de üçüncü kişi denetleyicileri yapmaya çalışıyorum. Ben yeni bir başlangıç ​​yapıyorum ve denetleyicimi nasıl işlevsel hale getireceğimi tamamen şaşırtdım. Saatlerce araştırma yaptım, ancak bulabileceğim hiçbir konu sorumu yanıtlamıyor. İki betik, bir CameraController ve bir CharacterController var. Kodum aşağıda.Unity3D C#. İki nesne arasındaki mesafeyi sabit tutarken transform.RotateAround() işlevini kullanarak

CameraController:

using UnityEngine; 
using System.Collections; 

public class CameraController : MonoBehaviour { 
public GameObject target; 
public float rotationSpeed; 
Vector3 offset; 
Vector3 CameraDestination; 


// Use this for initialization 
void Start() { 
    offset = transform.position - target.transform.position; 
    CameraDestination = offset + transform.position; 
    rotationSpeed = 50f; 
    transform.position = CameraDestination; 
} 

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

    transform.LookAt (target.transform.position); 
    float h = Input.GetAxisRaw ("Horizontal"); 
    transform.RotateAround (target.transform.position, Vector3.up, Time.deltaTime * h * rotationSpeed); 

    target.transform.Rotate (0f, Time.deltaTime * h * rotationSpeed, 0f); 

} 
} 

CharacterController:

sol veya sağ ok tuşu ya basıldığında
using UnityEngine; 
using System.Collections; 

public class CharController : MonoBehaviour { 

public float playerSpeed = 10f; 


// Use this for initialization 
void Start() { 



} 

// Update is called once per frame 
void Update() { 
    float Vertical = Input.GetAxis("Vertical"); 
    transform.position += transform.forward * Time.deltaTime * playerSpeed * Vertical; 



} 
} 

, oyuncu ve kamera döner hem. Fotoğraf makinesini oynatıcıya bir çocuk olarak takmaya çalışırsam, kameranın dönüşü berbat olur, ancak kamerayı oynatıcıya bağlamayınca, kamera oynatıcıyı takip etmeyi durdurur. Fotoğraf makinesini müzikçalara göre belirli bir konuma ayarlamaya çalışırsam, oynatıcının yapmak istediği gibi etrafında dönmeyi durdurur. Ben sadece çalışır bir yöntemle gelemiyorum. Sorularıma cevap verdiğiniz için şimdiden teşekkür ederiz!

cevap

3

Bu konuya gittiğimde, 2 çocuğa sahip olan boş bir gameObject 'i, kamerayı ve ardından da karakterin ağını kullanmayı seviyorum. Bu kamera döndürmek sağlayacak

transform.RotateAround (CharacterRig.transform.position, Vector3.up, Time.deltaTime * h * rotationSpeed); 

: Eğer karakteri döndürmek istediğinizde

> CharacterController 
    > Camera 
    > CharacterRig 

, sen karakterin etrafında Kamera döndürmek istediğinizde, sonra kodunuzu değiştirmek, CharacterController döndürmek Herhangi bir karakter animasyonu ne olursa olsun ve sorununuzu çözmelidir. Animasyonları daha sonra uygulamak istiyorsanız, kameranın canlandırılmakta olan bir şeyle canlandırılmasını istemediğiniz için bu çok önemlidir, çünkü animasyonla birlikte hareket edecektir.

P. Kodunuz iyi görünüyor. Oyun nesneleri oluşturmanın tamamen yolu olduğundan emin olun.

+0

Yardımlarınız için çok teşekkür ederim! –

+0

@AaronGe Çalıştı mı? – Zze

+0

Evet, teşekkürler! –

İlgili konular