2017-08-21 6 views
0

私は地図の端に手が届くとカメラがロックされますが、カメラがロックされていますが、回転するまでプレーヤが端に向かって前進することができます。 私はmathf.clampを使用する必要があると知っていますが、現在のコードにどのように適用するかはわかりません。ありがとうございました。カメラをロックするにはどうすればいいですか? Unity2D

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class walkScript : MonoBehaviour { 

    public float speed = 1.5f; 
    private Vector3 target; 
    private Vector3 lastTarget; 
    private Animator animator; 

    private Vector3 camTarget; 
    public GameObject cameraMain; 

    void Start() { 
     target = transform.position; 
     camTarget = cameraMain.transform.position; 
     animator = GetComponent<Animator>(); 
    } 

    void Update() { 
     if (Input.GetMouseButtonDown(0)) { 
      target = Camera.main.ScreenToWorldPoint(Input.mousePosition); 
      target.z = transform.position.z; 
      target.y = transform.position.y; 

      camTarget = Camera.main.ScreenToWorldPoint(Input.mousePosition); 
      camTarget.z = cameraMain.transform.position.z; 
      camTarget.y = cameraMain.transform.position.y; 
      flipCharacter(); 
     } 
     transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime); 
     cameraMain.transform.position = Vector3.MoveTowards(cameraMain.transform.position, camTarget, speed * Time.deltaTime); 
     lastTarget.x = target.x; 
    }  
    private void flipCharacter() 
    { 
     if (lastTarget.x > target.x) { 
      animator.transform.Rotate(0, 180, 0); 
     } else if (lastTarget.x < target.x) { 
      animator.transform.Rotate(0, 180, 0); 
     } 
    } 
} 

答えて

0

こんにちは! このコードはうまくいくはずです。

public Vector2 mapLimit; 
void Update() { 
    if (Input.GetMouseButtonDown(0)) { 
     target = Camera.main.ScreenToWorldPoint(Input.mousePosition); 
     target.z = transform.position.z; 
     target.y = transform.position.y; 

     camTarget = Camera.main.ScreenToWorldPoint(Input.mousePosition); 
     camTarget.z = cameraMain.transform.position.z; 
     camTarget.y = cameraMain.transform.position.y; 

     camTarget.x = Mathf.Clamp(camTarget.x, -mapLimit.x, mapLimit.x); 
     camTarget.z = Mathf.Clamp(camTarget.z, -mapLimit.y, mapLimit.y); 

     flipCharacter(); 
    } 
    transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime); 
    cameraMain.transform.position = Vector3.Lerp(cameraMain.trasform.position, camTarget, Time.deltaTime * speed); 
    lastTarget.x = target.x; 
} 
+0

これは、どこをクリックしてもカメラを自動的に動かします。 それは文字にも従いません。 – Lynnstrum

関連する問題