2016-07-18 1 views
0

CSHARP内のスクリプトが後に変換:ライン上の私は、単一性のJavaスクリプトをcsharpスクリプトに変換しようとしていますが、いくつかのエラーがありますか?

using UnityEngine; 
using System.Collections; 

public class MYCLASSNAME : MonoBehaviour { 


    public Transform TargetLookAt; 

    public float Distance = 5.0f; 
    public float DistanceMin = 3.0f; 
    public float DistanceMax = 10.0f; 

    private float mouseX = 0.0f; 
    private float mouseY = 0.0f; 
    private float startingDistance = 0.0f;  
    private float desiredDistance = 0.0f; 

    public float X_MouseSensitivity = 5.0f; 
    public float Y_MouseSensitivity = 5.0f; 
    public float MouseWheelSensitivity = 5.0f; 
    public float Y_MinLimit = -40.0f; 
    public float Y_MaxLimit = 80.0f; 

    public float DistanceSmooth = 0.05f;  
    private float velocityDistance = 0.0f;  
    private Vector3 desiredPosition = Vector3.zero; 

    public float X_Smooth = 0.05f; 
    public float Y_Smooth = 0.1f; 
    private float velX = 0.0f; 
    private float velY = 0.0f; 
    private float velZ = 0.0f; 
    private Vector3 position = Vector3.zero; 

    CursorLockMode wantedMode;  


    void Start(){ 
     Distance = Mathf.Clamp(Distance, DistanceMin, DistanceMax); 
     startingDistance = Distance; 
     Reset(); 
     SetCursorState(); 
     OnGUI(); 

    } 

    void LateUpdate(){ 
     if (TargetLookAt == null) 
      return; 

     HandlePlayerInput(); 

     CalculateDesiredPosition(); 

     UpdatePosition(); 
    } 

    void HandlePlayerInput(){ 
     float deadZone= 0.01f; // mousewheel deadZone 

     //if (Input.GetMouseButton(1)) 
     //{ 
     mouseX += Input.GetAxis("Mouse X") * X_MouseSensitivity; 
     mouseY -= Input.GetAxis("Mouse Y") * Y_MouseSensitivity; 
     //} 

     // this is where the mouseY is limited - Helper script 
     mouseY = ClampAngle(mouseY, Y_MinLimit, Y_MaxLimit); 

     // get Mouse Wheel Input 
     if (Input.GetAxis("Mouse ScrollWheel") < -deadZone || Input.GetAxis("Mouse ScrollWheel") > deadZone) 
     { 
      desiredDistance = Mathf.Clamp(Distance - (Input.GetAxis("Mouse ScrollWheel") * MouseWheelSensitivity), 
       DistanceMin, DistanceMax); 
     } 
    } 

    void CalculateDesiredPosition(){ 
     // Evaluate distance 
     Distance = Mathf.SmoothDamp(Distance, desiredDistance, velocityDistance, DistanceSmooth); 

     // Calculate desired position -> Note : mouse inputs reversed to align to WorldSpace Axis 
     desiredPosition = CalculatePosition(mouseY, mouseX, Distance); 
    } 

    float CalculatePosition (float rotationX , float rotationY , float distance ){ 
     Vector3 direction = new Vector3(0, 0, -distance); 
     Quaternion rotation = Quaternion.Euler(rotationX, rotationY, 0); 
     return TargetLookAt.position + (rotation * direction); 
    } 

    void UpdatePosition(){ 
     float posX= Mathf.SmoothDamp(position.x, desiredPosition.x, velX, X_Smooth); 
     float posY= Mathf.SmoothDamp(position.y, desiredPosition.y, velY, Y_Smooth); 
     float posZ= Mathf.SmoothDamp(position.z, desiredPosition.z, velZ, X_Smooth); 
     position = new Vector3(posX, posY, posZ); 

     transform.position = position; 

     transform.LookAt(TargetLookAt); 
    } 

    void Reset(){ 
     mouseX = 0; 
     mouseY = 10; 
     Distance = startingDistance; 
     desiredDistance = Distance; 
    } 

    float ClampAngle (float angle , float min , float max ){ 
     while (angle < -360 || angle > 360) 
     { 
      if (angle < -360) 
       angle += 360; 
      if (angle > 360) 
       angle -= 360; 
     } 

     return Mathf.Clamp(angle, min, max); 
    } 

    // Apply requested cursor state 
    void SetCursorState() 
    { 
     Cursor.lockState = wantedMode; 
     // Hide cursor when locking 
     Cursor.visible = (CursorLockMode.Locked != wantedMode); 
    } 

    void OnGUI() 
    { 
     GUILayout.BeginVertical(); 
     // Release cursor on escape keypress 
     if (Input.GetKeyDown (KeyCode.Escape)) 
      Cursor.lockState = wantedMode = CursorLockMode.None; 

     switch (Cursor.lockState) 
     { 
     case CursorLockMode.None: 
      GUILayout.Label ("Cursor is normal"); 
      if (GUILayout.Button ("Lock cursor")) 
       wantedMode = CursorLockMode.Locked; 
      if (GUILayout.Button ("Confine cursor")) 
       wantedMode = CursorLockMode.Confined; 
      break; 
     case CursorLockMode.Confined: 
      GUILayout.Label ("Cursor is confined"); 
      if (GUILayout.Button ("Lock cursor")) 
       wantedMode = CursorLockMode.Locked; 
      if (GUILayout.Button ("Release cursor")) 
       wantedMode = CursorLockMode.None; 
      break; 
     case CursorLockMode.Locked: 
      GUILayout.Label ("Cursor is locked"); 
      if (GUILayout.Button ("Unlock cursor")) 
       wantedMode = CursorLockMode.None; 
      if (GUILayout.Button ("Confine cursor")) 
       wantedMode = CursorLockMode.Confined; 
      break; 
     } 

     GUILayout.EndVertical(); 

     SetCursorState(); 
    } 
} 

エラー:

Distance = Mathf.SmoothDamp(Distance, desiredDistance, velocityDistance, DistanceSmooth); 

エラーCS1502: 「UnityEngine.Mathf.SmoothDamp(フロートための最良のオーバーロードされたメソッドが一致し、浮動小数点数、浮動小数点数)は いくつかの無効な引数(CS1502)(アセンブリ - CSharp)

エラーCS1620:引数3にする必要があります

desiredPosition = CalculatePosition(mouseY, mouseX, Distance); 

エラーCS0029: '参照' キーワード (CS1620)(組立-CSHARP)ラインで

で渡される暗黙的に型 'フロートが' 「UnityEngineに変換できません。 Vector3' (CS0029)(組立-CSHARP)ラインで

return TargetLookAt.position + (rotation * direction); 

エラーCS0029:暗黙的に 'フロート' に型 'UnityEngine.Vector3' を変換できません(CS0029)(組立-CSHARP)ラインで

float posX= Mathf.SmoothDamp(position.x, desiredPosition.x, velX, X_Smooth); 

エラーCS1502: 'UnityEngine.Mathf.SmoothDamp(浮動小数点、浮動小数点、浮動小数点、浮動小数点、浮動小数点)の浮動小数点数が のいくつかの無効な引数(CS1502)に最適なオーバーロードされたメソッドが一致しました(アセンブリ - CSha RP)

エラーCS1620:

float posY= Mathf.SmoothDamp(position.y, desiredPosition.y, velY, Y_Smooth); 

エラーCS1502:引数3 'REF' キーワード (CS1620)(組立-CSHARP)ラインで

に渡さなければなりません: に最適なオーバーロードされたメソッド 'UnityEngine.Mathf.SmoothDamp(float、float、ref float、float)'が 無効な引数(CS1502)(アセンブリCSharp)

エラーCS1620:引数3 'REF' キーワードを渡さなければならない (CS1620)(組立-CSHARP)ラインで

float posZ= Mathf.SmoothDamp(position.z, desiredPosition.z, velZ, X_Smooth); 

エラーCS1502:最高オーバーロードされたメソッドは 'UnityEngine.Mathfに一致します。SmoothDamp(フロート、フロート、REFフロート、フロートが)」(組立-CSHARP) いくつかの無効な引数(CS1502)を持っている

エラーCS1620:引数3に渡さなければならない 'REF' キーワード (CS1620)(Assembly-

答えて

0

エラーには、「refキーワードで引数を渡す必要があります」と記載されています。つまり、refを引数に追加して、パラメータをin/outとしてマークする必要があります。例えば

Distance = Mathf.SmoothDamp(Distance, desiredDistance, ref velocityDistance, DistanceSmooth); 

あなたの関数CalculatePositionのためには、あなたは、単に間違った戻り値の型を定義しました。内部のコードは浮動小数点を返しません。位置に対して自然なので、Vector3を返します。

/* Does not return a float! */ 
Vector3 CalculatePosition(float rotationX, float rotationY, float distance) 
{ 
    Vector3 direction = new Vector3(0, 0, -distance); 
    Quaternion rotation = Quaternion.Euler(rotationX, rotationY, 0); 
    return TargetLookAt.position + (rotation * direction); 
} 
関連する問題