创建个动画

public Animator anim;

设置位置目标

private Vector3 target;

判定是否移动

private bool m_IsOver = true;

//封装目标位置

private bool isOver

{

get

{

return m_IsOver;

}

set

{

m_IsOver = value;

TargetGo.SetActive(!m_IsOver);

TargetGo.transform.position = target;

}

}

封装是否攻击

private bool m_attckOver = true;

private bool attckOver

{

get

{

return m_attckOver;

}

set

{

m_attckOver = value;

MagicGo.SetActive(!m_attckOver);

}

}

设置移动的速度

public float PlayerSpeed;

设置技能的速度

public float MagicSpeed;

鼠标点击位置生成的物体

public GameObject TargetGo;

技能物体

public GameObject MagicGo;

void Update()

{

如果按下W键

if (Input.GetKeyDown(KeyCode.W))

{

播放攻击动画

Attack();

生成攻击特效物体

GetMousePos();

}

如果按下左键

if (Input.GetMouseButtonDown(0))

{

获取射线的方法识别鼠标的位置

GetMousePos();

静止状态取消

isOver = false;

播放跑步动画

anim.SetBool("run", true);

攻击动画取消

attckOver = true;

}

}

获取鼠标位置让人物移动过去的方法

private void GetMousePos()

{

摄像机的射线照等于鼠标的位置

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

计算出方向

RaycastHit hitInfo = new RaycastHit();

射线的方向判定

if (Physics.Raycast(ray, out hitInfo))

{

如果射线点击的名字是plane面板

if (hitInfo.collider.name == "Plane")

{

位置等于射线的位置

target = hitInfo.point;

y左边为0

target.y = 0;

人物看向位置

transform.LookAt(target);

}

}

}

void FixedUpdate()

{

人物移动到位置

MoveTo(target);

}

攻击方法

private void Attack()

{播放攻击动画

anim.SetTrigger("attack");

技能物体的位置等于人物的位置

MagicGo.transform.position = transform.position;

开启移动

isOver = true;

取消播放动画

attckOver = false;

}

移动方法

private void MoveTo(Vector3 tar)

{

如果不是静止

if (!isOver)

{

人物的距离位置

Vector3 offSet = tar - transform.position;

位置相加

transform.position += offSet.normalized * PlayerSpeed * Time.deltaTime;

如果距离小于0.5

if (Vector3.Distance(tar, transform.position) < 0.5f)

{

播放跑步动画

anim.SetBool("run", false);

开启运动

isOver = true;

位置为鼠标的位置

transform.position = tar;

}

}

如果开始攻击

if (!attckOver)

{

距离等于鼠标位置减去技能的位置

Vector3 offSet = tar - MagicGo.transform.position;

实现技能的位置移动

MagicGo.transform.position += offSet.normalized * MagicSpeed * Time.deltaTime;

如果鼠标和技能之间的间距小于0.5

if (Vector3.Distance(tar, MagicGo.transform.position) < 0.5f)

{

攻击结束

attckOver = true;

技能位置等于鼠标位置

MagicGo.transform.position = tar;

}

}

}

}

一段代码之仿LOL移动方式相关推荐

  1. 调试一段代码两个小时都没搞定,继续死磕还是寻找其他方式?

    hi-好久不见,在家办公的你们还好吗? 听闻有人克服着网络不好.工作环境嘈杂的困难,已经连续待机 20 几个小时了.没办法,疫情当前,这点困难不算啥,该克服的还是要克服.实在不行,试试番茄工作法,提高 ...

  2. php整段代码注释,PHP标准注释|单行注释|多行注释|规则方式

    任何一门编程语言都有编程注释,注释的作用可以调试,可以描述代码的作用等等,说说那么PHP三种注释的方式 1, // 这是单行注释 2,# 这也是单行注释 3,/* */多行注释块 /* 这是多行注释块 ...

  3. 如何精确测量一段代码的执行时间

    最近在工作中遇到了需要精确测量一段C代码执行时间的需求,大家给出的方案有以下三种: gettimeofday(2) rdtsc/rdtscp clock_gettime(2) 下面我们就逐一介绍下这三 ...

  4. 干货 | 收藏!16段代码入门Python循环语句

    (图片付费下载于视觉中国) 作者 | 李明江 张良均 周东平 张尚佳,本文摘编自<Python3智能数据分析快速入门> 来源 | 大数据(ID:hzdashuju) [导读]本文将重点讲述 ...

  5. 值得收藏!16段代码入门Python循环语句

    来源:大数据 本文约6000字,建议阅读10分钟. 本文重点讲述for语句和while语句. [ 导读 ]本文重点讲述for语句和while语句.for语句属于遍历循环,while语句属于当型循环.除 ...

  6. 假设写一段代码引导PC开机这段代码是 ? Here is a tiny quot;OSquot; :-D

    Hello world -- OS 我找到了华科绍志远博士的相关代码,发现他依据MIT的JOS的boot.S 稍作改动.然后单独剥离出来,能够非常好玩~ 资料下载地址: http://download ...

  7. 查看某段代码或语句的被调用路径的方法小结

    在看代码时,难免想要知道它是最开始在哪里被调用至此的,或者本段代码是否会被调用.但是由于程序比较复现,各种宏定义,导致很难通直接阅读的方式确认它的被调用路径.平时个人比较喜欢用以下几种方法来确认其调用 ...

  8. 程序员写了段代码,自称完美! 网友: 我现在还在改你的Bug

    现在的互联网技术在飞速进步着,加之有一些程序员确实是喜欢编程,长久如此,很多程序员的技术也得到了一个质的飞跃,于是都想写出一个堪称没有Bug的代码! 这不,近日又有一位程序员发帖称: 可以看到,这是一 ...

  9. 「递归」第5集 | 从网瘾少年到极客大神:没有什么是一段代码解决不了的

    我们为什么叫「递归」 "递归" (recursion) 是一种在程序设计语言中被广泛使用的算法.它有两大特点,一是调用自己,二是化繁为简.我们当中那些优秀的技术人又何尝不是如此?他 ...

最新文章

  1. myeclipse-pro-2014-GA-offline-installer-windows 安装步骤 与安装效果预览
  2. 百度云使用第三方工具下载文件
  3. xshell 安装yum_Xshell上面简单安装docker
  4. 没有读过的书,就不要瞎推荐了!
  5. MapReduce不同进度的Reduce都在干什么?
  6. vi 多窗口同步滚动--适用于人工文件比较
  7. 用ABC三个字母简洁归纳2018年物联网趋势
  8. html语言笔记,HTML/HTML5 笔记
  9. MySQL详细知识点总结 可以收藏啦
  10. python教程 马哥_马哥python从入门到精通,资源教程下载
  11. 实用供热空调设计手册_暖通空调设计与施工数据图表手册
  12. linux ubi 分区,Linux ubi子系统原理分析
  13. 智齿客服网页端接入文档V2.3
  14. 多模态知识问答:MMCoQA: Conversational Question Answering over Text, Tables, and Images
  15. Alexa, Stop Spying on Me!“: Speech Privacy Protection Against Voice Assistants
  16. Leetcode| 216. 组合总和III、17. 电话号码的字母组合 Day25
  17. “七彩”糖果-吕中琪
  18. 关于SCO Unix 串口通讯
  19. Oracle数据库配置管理(一)
  20. Java银行管理系统

热门文章

  1. [Introduction to programming in Java 笔记] 1.3.8 Gambler's ruin simulation 赌徒破产模拟
  2. java 龟兔赛跑_Java实现多线程模拟龟兔赛跑
  3. VSCode RemoteSSH 过程试图写入的管道不存在问题 解决
  4. 【Mysql】根据经纬度远近排序
  5. 陀螺仪的进动及其数学描述
  6. 为什么SEM竞价推广效果越来越差?
  7. PPT画图如何保存600dpi以及消除白边问题
  8. java 根据拼音查询汉字_java根据拼音搜索,但数据库为汉字的解决方案
  9. word2vec和bert的基本使用方法
  10. 生鲜配送ERP系统_对商品模块数据模型与界面设计的思考【Java 开源版】杭州生鲜配送系统_升鲜宝_SaaS全链路生鲜供应链管理系统_升鲜宝