Unity3D 는 카메라 렌즈 의 이동 을 실현 하고 각 도 를 제한 합 니 다.

본 논문 의 사례 는 유 니 티 3D 가 카메라 렌즈 의 이동 을 실현 하고 각 도 를 제한 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
카메라 렌즈 는 마 우 스 를 따라 이동 하고 상하 좌우 의 이동 각 도 를 제한한다.

public class ViewFromCream : MonoBehaviour 
{
  public int speed=5;
  public Vector3 vect;
  
  private float xcream;
  private float ycream;

  public void Update()
  {
    CreamView();
  }

  private void CreamView()
  {
    float x = Input.GetAxis("Mouse X");
    float y = Input.GetAxis("Mouse Y");
    if (x!=0||y!=0)
    {
      LimitAngle(60);
      LimitAngleUandD(60);
      this.transform.Rotate(-y * speed, 0, 0);
      this.transform.Rotate(0, x * speed, 0, Space.World);
    }
  }

  /// <summary>
  ///            
  /// </summary>
  /// <param name="angle">  </param>
  private void LimitAngle(float angle)
  {
    vect = this.transform.eulerAngles;
    //    x      (0~360)
    xcream = IsPosNum(vect.x);    
    if (xcream > angle)
      this.transform.rotation = Quaternion.Euler(angle,vect.y,0);
    else if (xcream < -angle)
      this.transform.rotation = Quaternion.Euler(-angle, vect.y, 0);
  }
  /// <summary>
  ///            
  /// </summary>
  /// <param name="angle"></param>
  private void LimitAngleUandD(float angle)
  {
    vect = this.transform.eulerAngles;
    //    y      (0~360)
    ycream = IsPosNum(vect.y);
    if (ycream > angle)
      this.transform.rotation = Quaternion.Euler(vect.x, angle, 0);
    else if (ycream < -angle)
      this.transform.rotation = Quaternion.Euler(vect.x, -angle, 0);
  }
  /// <summary>
  ///       -180~180   
  /// </summary>
  /// <param name="x"></param>
  /// <returns></returns>
  private float IsPosNum(float x)
  {
    x -= 180;
    if (x < 0)
      return x + 180;
    else return x - 180;   
  }
}
IsPosNum 방법 에 대한 설명
획득 한 오 라 각 을-180°-180°사이 로 전환 하려 는 이 유 는 eulerAngle 에서 x 축 과 y 축의 수 치 는 0-360 에 불과 하고 마이너스 가 없 기 때문이다.그러면 우리 의 각 도 를 복잡 하 게 판단 할 것 이다.예 를 들 어 좌우 각 도 를-60-60 사이 로 제한 하면 우 리 는 각도 가 300 도 를 초과 하거나 60 도 를 초과 하 는 지 판단 해 야 한다.분명히 300 도 를 초과 하 는 각 도 는 60 도 를 초과 해 야 한다.그러면 별도의 조건 을 붙 여 판단 해 야 한다.따라서 얻 은 값 을 전환 하 는 것 이 편리 합 니 다!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기