2015-01-03 3 views
0

Я пытаюсь создать изометрическую игру, такую ​​как столкновение кланов. Я создал Terrain, и я установил положение своей камеры (0,300, -10) и Rotation (40,45,0) и Perspective to Orthographic. Я использую код ниже, чтобы перетащить куб, но когда я перетаскиваю куб в какую-то позицию, куб не может быть видимым или видима только часть куба. Кажется, что позиция (X, Y, Z) все три меняются с использованием кода ниже. Но я хочу перетащить куб так же, как в любую верхнюю игру, такую ​​как Clash of Clans. Пожалуйста, помогите мне решить мою проблему.Как перетащить куб в орфографическую камеру в Unity 3d?

void OnMouseDrag() 
{   
    Vector3 mousePosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 0); 
    Vector3 objPosition = Camera.main.ScreenToWorldPoint (mousePosition);        
    this.target.transform.position = objPosition; 

} 

ответ

2

Для решения этой проблемы вам понадобится raycasting. Попробуйте this-

void OnMouseDrag() 
{   
    RaycastHit hitInfo; 
    bool hit = Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hitInfo, Mathf.Infinity, 1 << LayerMask.NameToLayer ("ground")); 
    if(hit){ 
     this.target.transform.position = hitInfo.point; 
    }        
} 

Вы можете использовать существующий грунт или поверхность или на любой ваш объект будет двигаться, изменить имя слоя на землю. Имейте в виду, что земля должна иметь коллайдер.

Смежные вопросы