查看: 1282|回复: 0
打印 上一主题 下一主题

[教程] 如何使用鼠标点击控制角色移动

[复制链接]

436

主题

17

听众

4683

积分

中级设计师

Rank: 5Rank: 5

纳金币
1379
精华
9

最佳新人 活跃会员 热心会员 灌水之王 突出贡献 周年庆

跳转到指定楼层
楼主
发表于 2017-2-28 08:44:16 |只看该作者 |倒序浏览
实现游戏角色移动不仅可以通过自动寻路方式实现,还可以通过控制鼠标点击位置实现,可能有些开发者会对第二种控制角色移动方式感兴趣,为此,下面就给大家介绍下unity3d中使用鼠标点击控制角色移动的实现方法,一起来看看吧。

  实现原理解析:

  当我们点击屏幕时,我们按照一定的方法,将屏幕上的二维坐标转化为三维坐标,然后我们从摄像机位置发射 一条经过该点的射线,则这条射线与大地平面的交点,就是我们的目标位置。那么确定了这个位置以后,我们需要做的就是让角色从原来的位置移动到这个位置,并在其间添加角色动画即可。对于角色移动的问题,如果复杂点的画我们可能要计算移动的方向向量,并针对起点和终点进行插值计算来实现,这里我们选择一种相对简单的办法,在Unity3D中,有一个LookAt()方法,该方法可以使物体发生旋转,使其z轴始终指向目标物体。再完成了旋转后,我们需要让物体沿着Z轴方向(forward)移动。这样就实现了鼠标点击控制人物走动这一功能。

  首先创建一个场景,准备一个地形Terrain和平行光Direction Light,并拖入之前事先准备好的人物模型,如图1:

  接下来为模型添加动画组件,并将动画的类型设置为Legacy模式,如图2、图3所示:

  设置默认的动画为idle,接下来,就要编写脚本代码:

[mw_shl_code=applescript,true]using UnityEngine;
using System.Collections;

public class PeopleControl : MonoBehaviour {
      
    //目标点坐标
    private Vector3 mTargetPos;
     
    void Start ()
    {
      
    }
     
    void Update ()
    {
      //按下鼠标右键时
      if(Input.GetMouseButton(1))
      {
         //获取屏幕坐标
         Vector3 mScreenPos=Input.mousePosition;
         //定义射线
         Ray mRay=Camera.main.ScreenPointToRay(mScreenPos);
         RaycastHit mHit;
         //判断射线是否击中地面
         if(Physics.Raycast(mRay,out mHit))
         {
            if(mHit.collider.gameObject.tag=="Terrain")
            {
               //获取目标坐标
               mTargetPos=mHit.point;
               //让主角面朝目标坐标并向目标移动
               transform.LookAt(mTargetPos);
               //播放奔跑动画
               transform.gameObject.GetComponent().Play("run");
               transform.Translate(Vector3.forward * 0.5F);
            }
         }
      }
      //松开鼠标右键时
      if(Input.GetMouseButtonUp(1))
      {
        transform.gameObject.GetComponent().Play("idle");
      }
    }
}[/mw_shl_code

[size=1em]  
  将脚本绑定到角色上以后,就能看到效果了。

原文链接:http://www.taidous.com/thread-51443-1-1.html

001.png (25.57 KB, 下载次数: 379)

001.png

002.png (61 KB, 下载次数: 403)

002.png

003.png (41.33 KB, 下载次数: 367)

003.png

效果.gif (83.68 KB, 下载次数: 387)

效果.gif

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-6-1 10:31 , Processed in 0.085740 second(s), 35 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部