任何一个无规则曲线它都是有若干个线段组成,及时是圆形它也是又若干个线段组成的,也就是说将若干个线段拼接起来就是我们须要的无规则曲线~那么在3D 的世界中
我们须要知道 X Y Z 三个点来确定一条3D线段。

Debug.DrawLine 绘制的线条只会在编辑器中显示,在真实的场景中不显示,所以要想在游戏中显示线条,必须使用LineRenderer

using System.Collections;
using System.Collections.Generic;
using UnityEngine;[RequireComponent(typeof(LineRenderer))]
public class RenderRange : MonoBehaviour {/// <summary>/// 圆的半径/// </summary>public float radius = 5f;/// <summary>/// 将圆平均切分为N份/// </summary>public int positionCount = 10;/// <summary>/// 每份的角度/// </summary>private float angle;/// <summary>/// 测试线条颜色/// </summary>private Color color = Color.green;private Quaternion q;private LineRenderer line;// Use this for initializationvoid Start () {angle = 360f / positionCount;line = GetComponent<LineRenderer>();//必须要先设置点的长度,然后再SetPosition,否则会报数组越界line.positionCount = positionCount;}// Update is called once per framevoid Update () {q = transform.rotation;for (int i = 0; i < positionCount; i++) {//确保第一个点在正前方if(i != 0) { q = Quaternion.Euler(q.eulerAngles.x, q.eulerAngles.y + angle, q.eulerAngles.z);}//注意Quaternion和Vector3相乘时,Quaternion必须在前面,因为它是一个矩阵Vector3 forwardPosition = transform.position + q *Vector3.forward * radius;line.SetPosition (i, forwardPosition);}for (int i = 0; i < positionCount; i++) {Debug.DrawLine(transform.position, line.GetPosition(i), color);if (i == 0) {Debug.DrawLine (line.GetPosition(positionCount - 1), line.GetPosition(i), color);} else {Debug.DrawLine (line.GetPosition(i - 1), line.GetPosition(i), color);}}}
}

Character Controller本身自带一个碰撞器,无需刚体即可完成触发(Trigger)和碰撞(Collision)功能。因此 Character Controller 需要一个平面或其它物体的支撑,否则就会受到重力影响掉下去。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;[RequireComponent(typeof(CharacterController))]
public class Move : MonoBehaviour {public int speed = 10;private CharacterController controller;// Use this for initializationvoid Start () {controller = GetComponent<CharacterController> ();}// Update is called once per framevoid Update () {}void FixedUpdate() {controller.SimpleMove (new Vector3(Input.GetAxisRaw ("Horizontal") * speed, 0, Input.GetAxisRaw ("Vertical") * speed));}
}

Materials:材质,控制线条整体的颜色
(如果使用多个材质,只有最后一个材质生效)

Width:控制线宽

LineRenderer可以在2D游戏中绘制攻击范围,因为2D游戏是用贴图呈现场景的,但是在3D游戏中,由于LineRenderer是采用坐标进行绘制,因此很可能会被更高的地形遮挡,如上图。

Unity LineRenderer相关推荐

  1. Unity LineRenderer 画运动轨迹

    问题描述: 一开始将LineRender组件 附给想要画轨迹的物体时,并不会显示在视图中. 原因是 需要动态产生 画线的实例,并把它附给 父object Youtube画线学习链接 LineRende ...

  2. unity组件LineRenderer

    这是一个好玩的组件 主要作用划线,像水果忍者中的刀光,还有一些涂鸦的小游戏,包括让鼠标划线然后让对象进行跟踪导航也可通过此插件完成 附注:unity版本建议使用稳定一些的版本,有些api可能已经发生变 ...

  3. Unity使用LineRenderer组件画出菱形,长度,角度可任意调节

    首先说下我的思路: 开始想的比较简单,就是先建两个空物体分别挂上脚本,一个在X轴画直线,一个与X轴成angle夹角,通过计算得出坐标,这样就能画出一个菱形的角度,下面是实例图: 最后再写个脚本通过循环 ...

  4. Unity 使用LineRenderer绘制贝塞尔曲线

    Unity 使用LineRenderer绘制贝塞尔曲线 LineRenderer介绍 LineRenderer线渲染器,在三维空间中渲染线段和曲线段. 贝塞尔曲线介绍 通过很少的控制点,生成复杂的平滑 ...

  5. unity 使用LineRenderer实现飘带飞舞的效果

    核心就是控制飘带上的每一个点,计算出相应的位置,然后使用LineRenderer把这些点连成线. 首先创建一个物体作为飘带的父物体,这里我使用了一个简单的Sphere. 然后给父物体添加Line Re ...

  6. 【Unity】LineRenderer画运动轨迹

    文章目录 LineRenderer画运动轨迹 LineRenderer画运动轨迹 网上关于LineRenderer的资料比较少,最后参考了这篇,应用到自己的场景中. 首先定义空物体,并转为预制体:默认 ...

  7. Unity 使用LineRenderer做画线游戏

    前段时间公司要求做一款画线游戏,经历了许多坑之后,最终确定使用LineRenderer来做,然后又是一系列的坑,好在最后还是做出来了,给大家分享下代码: using System.Collection ...

  8. Unity中利用LineRenderer绘制寻路路径

    基于A*的寻路路径点生成,这里只做之后的显示以及曲线平滑 这里主要是Catmull-Rom的应用,最终选用的是Centripetal Catmull–Rom spline 起初想要通过贝塞尔曲线去平滑 ...

  9. Unity 基于LineRenderer组件实现连线功能

    项目需求: 从一个设备的输出端口连线到另一个设备的输入端口.鼠标点击输出端口时,开始画线,位置随鼠标位置移动,再次点击鼠标,若为输入端口,连线成功. 实现思路: 第一时间想到了LineRenderer ...

最新文章

  1. table中head表头固定,body滚动
  2. 12种高效率热门编程语言,你会用几个?
  3. python元类的简单了解
  4. ASP.NET中常用的三十三种代码
  5. 互评Beta版本(Hello World!——SkyHunter)
  6. 星光 SaaS 伙伴甄云科技:如何构建更适合快成长企业的数字化采购管理平台?
  7. linux大文件系统管理,Linux 磁盘和文件系统管理
  8. PDM 物理模型codename转大写
  9. 局域一台打印机突然链接失败,其他能正常连接打印服务器。
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的旅游景点门票售票管理系统
  11. 乱码解决方案SecureCRT中文乱码解决方案
  12. Java加密压缩文件
  13. Raki的读paper小记:EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification
  14. java学习第114天,p699-706(05/12),完成QQ群发
  15. 笔记十一:提升高效技术领导的创新能力
  16. android跳过网络连接,绕过Android Android的Wi-Fi热点5设备连接限制 | MOS86
  17. java微信公众号开发之配置服务器
  18. 利用Redis原子计数器incr实现计数器及接口限流
  19. 1108 String复读机(JAVA)
  20. 机器人断脚_UFO专家:火星照片上发现远古机器人断脚

热门文章

  1. 计算机专业课程名称英语,《计算机专业英语》课程教学大纲
  2. windows平台下最新版VLC编译 MSYS (2.2.0)
  3. windows 系统下ssh不是内部或外部命令
  4. CG-CTF re部分wp
  5. 修复剑灵新装系统后不能玩的问题
  6. 推荐几个高质量前端公众号
  7. 帮过网:选调生一年可以考几次
  8. 锐起无盘XP常见故障解决办法
  9. 亚马逊店飞飞跟卖使用教程图文(四)
  10. 宾馆房间C++一解:宾馆里有一百个房间,从1-100编了号。第一个服务员把所有的房间门都打开,第二个服务员把所有编号是2的倍数的房间相反处理……以后每个服务员都是如此。共100个服务员哪几扇门是打开的