免费相机-orbit VirtualJoystick

时间:2017-12-24 19:14:28

标签: android unity3d

虚拟操纵杆有问题,它负责控制相机“轨道”,它围绕主要玩家角色旋转所有场景,相机可以通过地形/地面看到的问题。我该如何预防呢?

请查看以下屏幕截图和脚本:

enter image description here

enter image description here

enter image description here

using UnityEngine;
using System.Collections;

public class FreeCamera : MonoBehaviour {
    public Transform lookAt;
    public VirtualJoystick camerajs;
    private float distance = 200.0f;
    private float currentx = 0.0f;
    private float currenty = 0.0f;
    private float sensitivityx = 1.0f;
    private float sensitivityy = 1.0f;
    private void Update()
    {
        currentx += camerajs.InputDirection.x * sensitivityx;
        currenty += camerajs.InputDirection.z * sensitivityy;
    }
    private void LateUpdate()
    {
        Vector3 dir = new Vector3(0, 0, -distance);
        Quaternion rotation = Quaternion.Euler(currenty, currentx, 0);
        transform.position = lookAt.position + rotation * dir;
        transform.LookAt(lookAt);
    }
}
using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems;

public class VirtualJoystick : MonoBehaviour,IDragHandler,IPointerUpHandler,IPointerDownHandler {

    private Image bgImg;
    private Image joystickImg;
    public Vector3 InputDirection{ set; get;}
    // Use this for initialization
    void Start () {
        bgImg = GetComponent<Image> ();
        joystickImg = transform.GetChild (0).GetComponent<Image> ();
        InputDirection = Vector3.zero;

    }

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

    //}
    public virtual void OnDrag(PointerEventData ped)
    {
        Vector2 pos = Vector2.zero;
        if (RectTransformUtility.ScreenPointToLocalPointInRectangle
            (bgImg.rectTransform,
                ped.position,
                ped.pressEventCamera,
                out pos)) {
            pos.x=(pos.x/bgImg.rectTransform.sizeDelta.x);
            pos.y=(pos.y/bgImg.rectTransform.sizeDelta.y);
            float x=(bgImg.rectTransform.pivot.x==1) ? pos.x*2+1 : pos.x*2-1;
            float y=(bgImg.rectTransform.pivot.y==1) ? pos.y*2+1 : pos.y*2-1;
            InputDirection=new Vector3(x,0,y);
            InputDirection=(InputDirection.magnitude>1) ? InputDirection.normalized : InputDirection;

            joystickImg.rectTransform.anchoredPosition=
                new Vector3(InputDirection.x*(bgImg.rectTransform.sizeDelta.x/3),InputDirection.z*(bgImg.rectTransform.sizeDelta.y/3));
            Debug.Log(InputDirection);
        }

    }
    public virtual void OnPointerDown(PointerEventData ped)
    {
        OnDrag (ped);

    }
    public virtual void OnPointerUp(PointerEventData ped)
    {


        //Here is the problem it just goes to zero so fast so my character also moves so fast...how can i make it so motth
        InputDirection =Vector3.zero;
        joystickImg.rectTransform.anchoredPosition =Vector3.zero;
    }
}

1 个答案:

答案 0 :(得分:-1)

添加统一框对撞机

后解决了这个问题

在执行以下操作后解决此问题1-添加计划而不是地形2-删除计划默认对撞机3-向计划添加框架对撞机4-向目标添加框架对撞机与摄像机光线投射相关的问题 -