Unity 鼠标点击控制玩家角色移动
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 鼠标点击控制玩家角色移动相关推荐
- Unity3d使用鼠标点击控制人物走动无效的问题
Unity3d使用鼠标点击控制人物走动无效的问题 最近在自学Unity3d,在学到使用鼠标点击控制人物走动时,按照API上面将代码写好,如下: void Update () {// _clickLis ...
- UNITY·鼠标点击地面角色移动
实现效果如下图 项目设置 unity版本:2020.3.24f1c2(不要太旧的版本应该也可以) 渲染管线: URP 一.环境 Ground的标签需要被设置为Ground,并勾选静态 并在导航面板的对 ...
- unity鼠标点击显示粒子特效
参考链接:(51条消息) unity 两个相机叠加 - CSDN (51条消息) [Unity]鼠标点击在屏幕上产生特效_SuperWiwi的博客-CSDN博客_unity点击特效 (51条消息) U ...
- Unity鼠标点击射线的检测
void Update(){transform.RotateAround(Vector3.zero, Vector3.up, Time.deltaTime * 20);if (Input.GetMou ...
- Unity使用键盘wasd控制绑定角色和第一人称摄像机随鼠标移动
首先创建一个物体,然后里面加上摄像机并且调整到相应的位置 在创建的物体上添加一个组件character controller 键盘控制移动代码 public float speed = 6.0F; p ...
- Unity 鼠标点击地面移动
目录 效果 分析 具体流程 效果 分析 在这里我们需要用到的知识点有 AI(地面烘焙,自动寻路) 射线检测 具体流程 首先我们需要创建一个地面Plane 创建好之后在右侧Inspector面板中把Na ...
- 【.Net】鼠标点击控制鼠标活动范围 ClipCursor
可以使用API ClipCursor,如果你不嫌麻烦的话. 以下方法: Private Sub Form1_MouseDown(sender As System.Object, e As System ...
- 鼠标点击控制div层展开收缩
.展开收缩时使用的CSS动画完成的(此例子使用了第三种判断方法) 一.首先动态设置class: 1.三目运算符判断 <div class="hello" :class=&qu ...
- Unity鼠标左键控制物体
void update(){if (Input.GetMouseButtonDown(0)){print("按下了左键");}}
最新文章
- 仿人智能控制器的参数简化(已发表于《计算机测量与控制》2013年第4期)
- 【题解】P1508 Likecloud-吃、吃、吃(简单DP)
- Presenting the Permanent Generation
- 安装Tomcat6.0
- openfire服务器
- 得到节点值的两种方法
- Eclipse 调试器
- python有什么用-Python为什么这么火?学习python有什么用?
- java json处理入门
- 一文看懂测试自动化的玄妙
- 从单个静止图像进行 3d 深度重建(论文2007)
- 科学计算机弧度怎么读,角度怎么换算(角度换算弧度计算器)
- MODIS数据下载之USGS下载流程
- 哪个软件可以玩java游戏_安卓java模拟器?安卓手机如何玩JAVA游戏以及JAVA软件的方法...
- Rafy 开源贡献中心 - 组织成立,并试运行一月小结
- javascript第六周总结
- FTDI通用转USB芯片简述
- 指定Jboss的JDK
- 预测2018年世界杯决赛_2018年5个电子商务预测
- (keras自学排雷)Layer lstm will not use cuDNN kernel
热门文章
- 习题 3.1 假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。
- 前台传入数据,在后台servelet中接收的,强硬解决乱码格式
- 王劲说无人车是他的终身事业,他要重回行业一线!
- 大数据24小时:京东启动“人工智能加速器”项目,网传王劲因“家庭原因”离开景驰
- 在 Azure 上部署 Kubernetes 集群
- ActivityManagerService架构剖析开篇
- 前程无忧达成私有化协议:遭遇大砍价 作价降至43亿美元
- 如何挑选品质好的服装
- 钻石DIAMOND英语源于DIAMAUND钻石
- 欧盟委员会希望将电子支付标准化