LineRenderer在unity5.5中的使用,新手使用攻略
来源:互联网 发布:淘宝保健品标题怎么改 编辑:程序博客网 时间:2024/06/18 10:41
因为项目原因,需要用到LineRenderer,所以学习了这方面的知识。
最方便的,当然是去看官方文档,或者unity圣典,但是还有一篇博客,对LineRenderer的使用做出了简洁的介绍,尤其是举例,对我这种小白非常的友好。
点击打开链接
当然,这篇文章介绍的不够全面,而且有些方法已经被弃用,如果你想要了解最新的和最全面的关于LineRenderer的知识,那么推荐你去看SiKi的课程,很短,但是挺全面。
点击打开链接
最后,当然是附上自己的代码啦。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Floor : Interactable
{
public List<LineRenderer> lines;//定义一个LineRenderer的数组
private LineRenderer curRender;//当前的LineRenderer
private GameObject line;
private Vector3 StartPos;
private Vector3 EndPos;
void Start () {
}
private LineRenderer GenerateLine(Vector3 startPoint,Vector3 endPoint)//画线的函数
{
line = new GameObject("Line");//定义一个新的游戏物体,叫做Line
//line.transform.SetParent(transform);//将他作为当前物体的子物体
line.AddComponent<Line>();//给他添加一个Line方法
LineRenderer lineRender = line.AddComponent<LineRenderer>();//定义一个lineRender来接收line添加LineRenderer组件
lineRender.numPositions = 2;//每条线两个点
lineRender.SetPosition(0, startPoint);//第一个点是开始点
lineRender.SetPosition(1, endPoint);//第二个点是结束点
lineRender.startWidth = 0.1f;
lineRender.endWidth = 0.1f;
StartPos = startPoint;
return lineRender;//返回lineRenderer
}
private void RotateLine(ref LineRenderer line, Vector3 destPoint)
{
line.SetPosition(1, destPoint);
}
// Update is called once per frame
void FixedUpdate () {
}
public override void OnPointerDragBegin(Vector3 pos)
{
curRender = GenerateLine(pos, pos);
lines.Add(curRender);
}
public override void OnPointerDragging(Vector3 pos)
{
RotateLine(ref curRender, pos);
EndPos = pos;
//设置碰撞器大小和位置
}
public override void OnPointerUp(Vector3 pos)
{
Debug.Log("start:"+StartPos);
Debug.Log("end:"+EndPos);
var boxcollider = line.AddComponent<BoxCollider>();
addColliderToLine(ref boxcollider, StartPos, EndPos);
}
private void addColliderToLine(ref BoxCollider col,Vector3 startPos,Vector3 endPos)
{
//BoxCollider col = new GameObject("Collider").AddComponent<BoxCollider>();
col.transform.parent = curRender.transform; // Collider is added as child object of line
float lineLength = Vector3.Distance(startPos, endPos); // length of line
col.size = new Vector3(lineLength, 0.1f, 1f); // size of collider is set where X is length of line, Y is width of line, Z will be set as per requirement
//Vector3 midPoint = (startPos + endPos) / 2;
Vector3 midPoint=new Vector3((startPos.x+endPos.x)/2,startPos.y, (startPos.z + endPos.z) / 2);
col.transform.position = midPoint; // setting position of collider object
Debug.Log(midPoint);
// Following lines calculate the angle between startPos and endPos
float angle = (Mathf.Abs(startPos.y - endPos.y) / Mathf.Abs(startPos.x - endPos.x));
if ((startPos.y < endPos.y && startPos.x > endPos.x) || (endPos.y < startPos.y && endPos.x > startPos.x))
{
angle *= -1;
}
angle = Mathf.Rad2Deg * Mathf.Atan(angle);
col.transform.Rotate(0, 0, angle);
}
}
- LineRenderer在unity5.5中的使用,新手使用攻略
- Unity5的AssetBundle系统在mmo中的使用经验
- Unity 使用LineRenderer 画箭头
- Unity3D中LineRenderer的使用
- 在Unity5中使用Protobuf
- 在Unity5中使用Protobuf
- android studio新手使用攻略
- <Unity3D>Unity3D中LineRenderer的使用
- <Unity3D>Unity3D中LineRenderer的使用
- Axure使用攻略 (新手必看)
- Unity中使用脚本LineRenderer(现行渲染器)画圆
- Unity5.3+ 在UGUI 上使用 粒子特效
- CSS背景background使用攻略 新手必看!
- unity5.X AssetBundle使用(一 )
- unity5.X AssetBundle使用(二 )
- Unity5 AssetBundle的简单使用
- 新手使用skynet过程中的问题
- 在Ubuntu下使用mongodb(新手上路)
- 二分贪心x
- 常见对象-Object类
- Android的与服务器端传送信息使用JSON类-JSONObject与JSONArray的使用
- Linux问题—VMware中Linux和Windows共享文件夹
- TCP小结
- LineRenderer在unity5.5中的使用,新手使用攻略
- Ruby on Rails学习笔记(五 常用操作)
- Python 单线程与多线程批量下载的比较
- 使用GitLab、Jenkins、Docker建立快速持续化集成交付部署方案
- linux安装Tomcat
- numpy 基础知识
- 【学习笔记17】java面向对象-异常处理:捕获异常与抛出异常
- 动态规划 1
- RIO——健壮的IO包