版权声明:本文为博主原创文章,未经博主允许不得转载。
初学Unity3D,老大给出个这样的题:当鼠标点击某个位置时,物体将会平滑的移动到此点,并且摄像机会跟随物体运动,自己的实现:。C#代码如下:
其中public Camera cam指定为Main Camera
- float speed = 1.0f;
- RaycastHit hit = new RaycastHit();
- Vector3 velocity;
- Vector3 startPos;
- bool canMove = false;
- public Camera cam;
- // Use this for initialization
- void Start () {
- }
- // Update is called once per frame
- void Update () {
- if(Input.GetMouseButtonUp(0))
- {
- Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
- if(Physics.Raycast(ray,out hit,100))
- {
- if(null != hit.transform)
- {
- print("can move");
- canMove = true;
- startPos = transform.position;
- velocity = hit.point - startPos;
- }
- }
- }
- if(canMove && null != hit.transform)
- {
- print("ready for move");
- print(transform.position.ToString() + hit.point.ToString());
- if((transform.position.x - hit.point.x >0.01 || (transform.position.x - hit.point.x < -0.01)) ||
- (transform.position.y - hit.point.y > 0.01 || (transform.position.y - hit.point.y < -0.01)))
- {
- print("moving");
- transform.Translate(velocity/velocity.magnitude * speed * Time.deltaTime);
- cam.transform.Translate(velocity/velocity.magnitude * speed * Time.deltaTime);
- cam.transform.LookAt(transform.position);
- }else
- {
- print("can not move");
- canMove = false;
- }
- }
- }