1.首先创建一个角色
如果有动画就添加上动画组件
设置刚体、碰撞体等一系列需要的组件(看自身需求)

2.然后创建一个plane做地板(记得地板也要添加碰撞体,不然人物会一直下落)

3.然后添加一个脚本PlayerMove挂载到玩家角色身上

脚本思路:
1.通过射线检测,判断点击的是地板还是敌人或是己方队友
2.移动,若是敌人就判断是否在攻击距离内,若不在就移动到攻击距离,然后开始攻击,若果队友或者是地板就直接移动到 目标点
3.目标点与自身的位置关系,是否要转身、距离等
4.停止,由于float类型有误差的关系,所以当距离小于一定值得时候,就判定为到达目标点

代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerMove : MonoBehaviour
{//移动速度private float speed = 3f;//动画private Animator ani;//射线碰撞检测private RaycastHit hit;//射线private Ray ray;//鼠标点击位置private Vector3 endPosition;Vector3 step;Quaternion ratation;private void Awake(){//获取动画组件ani = GetComponent<Animator>();}void Update(){//如果按下鼠标右键(0是左键、1是右键)if (Input.GetMouseButtonDown(1)){//向鼠标点击的位置发射射线ray = Camera.main.ScreenPointToRay(Input.mousePosition);//如果射线碰到物体if (Physics.Raycast(ray, out hit)){//如果是地板就行走,如果是友军就走过去,如果是敌人就走过去并攻击if (hit.transform.tag == "Enemy"){//攻击//Attack();Debug.Log("攻击");}else{//如果不是敌人//赋值目标点endPosition = hit.point;//移动过程中y轴保持不变endPosition.y = transform.position.y;//方向向量step = endPosition - transform.position;ratation = Quaternion.LookRotation(step);}}//播放动画ani.SetBool("Move", true);}Move();Stop();}//移动public void Move(){//移动//方向向量!=(0,0,0)才能说明有地方可以去,不然就是点自己脚底板了if (step != Vector3.zero){//转身transform.rotation = Quaternion.Lerp(transform.rotation, ratation, 0.2f);//移动过去transform.Translate(transform.forward * speed * Time.deltaTime, Space.World);}}//停止移动public void Stop(){//计算自身和目标点的距离float distance = Vector3.Distance(transform.position, endPosition);//判断和目标点的距离是否小于0.1fif (distance < 1f){//如果小于就判定到达目的地,执行待机step = Vector3.zero;//停止播放动画ani.SetBool("Move", false);}}
}

Unity 鼠标点击控制玩家角色移动相关推荐

  1. Unity3d使用鼠标点击控制人物走动无效的问题

    Unity3d使用鼠标点击控制人物走动无效的问题 最近在自学Unity3d,在学到使用鼠标点击控制人物走动时,按照API上面将代码写好,如下: void Update () {// _clickLis ...

  2. UNITY·鼠标点击地面角色移动

    实现效果如下图 项目设置 unity版本:2020.3.24f1c2(不要太旧的版本应该也可以) 渲染管线: URP 一.环境 Ground的标签需要被设置为Ground,并勾选静态 并在导航面板的对 ...

  3. unity鼠标点击显示粒子特效

    参考链接:(51条消息) unity 两个相机叠加 - CSDN (51条消息) [Unity]鼠标点击在屏幕上产生特效_SuperWiwi的博客-CSDN博客_unity点击特效 (51条消息) U ...

  4. Unity鼠标点击射线的检测

    void Update(){transform.RotateAround(Vector3.zero, Vector3.up, Time.deltaTime * 20);if (Input.GetMou ...

  5. Unity使用键盘wasd控制绑定角色和第一人称摄像机随鼠标移动

    首先创建一个物体,然后里面加上摄像机并且调整到相应的位置 在创建的物体上添加一个组件character controller 键盘控制移动代码 public float speed = 6.0F; p ...

  6. Unity 鼠标点击地面移动

    目录 效果 分析 具体流程 效果 分析 在这里我们需要用到的知识点有 AI(地面烘焙,自动寻路) 射线检测 具体流程 首先我们需要创建一个地面Plane 创建好之后在右侧Inspector面板中把Na ...

  7. 【.Net】鼠标点击控制鼠标活动范围 ClipCursor

    可以使用API ClipCursor,如果你不嫌麻烦的话. 以下方法: Private Sub Form1_MouseDown(sender As System.Object, e As System ...

  8. 鼠标点击控制div层展开收缩

    .展开收缩时使用的CSS动画完成的(此例子使用了第三种判断方法) 一.首先动态设置class: 1.三目运算符判断 <div class="hello" :class=&qu ...

  9. Unity鼠标左键控制物体

    void update(){if (Input.GetMouseButtonDown(0)){print("按下了左键");}}

最新文章

  1. 仿人智能控制器的参数简化(已发表于《计算机测量与控制》2013年第4期)
  2. 【题解】P1508 Likecloud-吃、吃、吃(简单DP)
  3. Presenting the Permanent Generation
  4. 安装Tomcat6.0
  5. openfire服务器
  6. 得到节点值的两种方法
  7. Eclipse 调试器
  8. python有什么用-Python为什么这么火?学习python有什么用?
  9. java json处理入门
  10. 一文看懂测试自动化的玄妙
  11. 从单个静止图像进行 3d 深度重建(论文2007)
  12. 科学计算机弧度怎么读,角度怎么换算(角度换算弧度计算器)
  13. MODIS数据下载之USGS下载流程
  14. 哪个软件可以玩java游戏_安卓java模拟器?安卓手机如何玩JAVA游戏以及JAVA软件的方法...
  15. Rafy 开源贡献中心 - 组织成立,并试运行一月小结
  16. javascript第六周总结
  17. FTDI通用转USB芯片简述
  18. 指定Jboss的JDK
  19. 预测2018年世界杯决赛_2018年5个电子商务预测
  20. (keras自学排雷)Layer lstm will not use cuDNN kernel

热门文章

  1. 习题 3.1 假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。
  2. 前台传入数据,在后台servelet中接收的,强硬解决乱码格式
  3. 王劲说无人车是他的终身事业,他要重回行业一线!
  4. 大数据24小时:京东启动“人工智能加速器”项目,网传王劲因“家庭原因”离开景驰
  5. 在 Azure 上部署 Kubernetes 集群
  6. ActivityManagerService架构剖析开篇
  7. 前程无忧达成私有化协议:遭遇大砍价 作价降至43亿美元
  8. 如何挑选品质好的服装
  9. 钻石DIAMOND英语源于DIAMAUND钻石
  10. 欧盟委员会希望将电子支付标准化