在Unity3D中实现点击地面物体移动到指定地点

      欢迎来到狗刨学习网,这里有很多U3D资源U3D培训视频U3D常见问题U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌  

  

       1.首先在场景中新建一个Plane和一个Cube,找两张不同的贴图(方便区分PlaneCube),并把图片导入到工程中,将贴图分别拖曳至Plane上和Cube上,并将摄像机调到合适的位置。使摄像机俯视Plane。调节好的Game视图如图1-1所示,文章出处【狗刨学习网】: 

图1-1 

  

 

2.新建C#脚本,命名为Pathfinding1,双击脚本进行编辑,代码如下: 

using UnityEngine;
using System.Collections;
public class Pathfinding1 : MonoBehaviour {
 
    public GameObject play;
    public Vector3 temPos;
    public bool isMoving;
    public Quaternion rotation;
    // Use this for initialization
    void Start () {
 
        play = GameObject.Find("Cube");
        print(play);
   
    }
     
    // Update is called once per frame
    void Update () {
 
        if(Input.GetMouseButtonDown(0))
        {
            //LayerMask mask = LayerMask.NameToLayer("Ground");
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
             
            if (Physics.Raycast(ray, out hit, 100))
            {
                print (hit.collider.name);  
                if(hit.collider.gameObject.name=="Plane")
                {
                    Debug.Log(hit.point);
         
                    temPos = new Vector3(hit.point.x, play.transform.position.y, hit.point.z);
     
                    if(Vector3.Distance(play.transform.position,temPos) > 0.1)
                    {
                        isMoving = true;
                    }
                }
            }
        }
 
        if(Vector3.Distance(play.transform.position,temPos) <= 0.1)
        {
            isMoving = false;
        }
             
        if(isMoving)
        {
            turn(temPos);
            this.GetComponent<CharacterController>().SimpleMove((temPos-play.transform.position).normalized*5f);
        }
         
    }
 
    void turn(Vector3 look)
    {
        rotation = Quaternion.LookRotation (temPos-play.transform.position, Vector3.up);
        play.transform.rotation = Quaternion.Slerp(play.transform.rotation, rotation,Time.deltaTime*6.0f);
    }
 
} 

3.将代码拖曳到创建的Cube上,给Cube添加CharacterController组件,点击播放,即可实现点击地面,物体跟随移动到哪里 

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值