什么是Mesh? Mesh是指的模型的网格,3D模型是由多边形拼接而成,而多边形实际上又是由多个三角形拼接而成的。即一个3D模型的表面其实是由多个彼此相连的三角面构成。三维空间中,构成这些三角形的点和边的集合就是Mesh。 原理 即动态创建一个Mesh,设置三角形和顶点数据,然后赋值给MeshFilte
文章目录shadow map技术简介MiniEngine中的shadowBufferMiniEngine中的shadowCamera调试以及知其然而不知所以然的魔改过程柱子上没有影子?总结 shadow map技术简介 Shadow Map网上有大把的技术文档。 简单说就是设置一个camera到需要产生阴影的光源位置,根据光源类型有不同的
3D数学 数学公式:X平方加Y平方加Z平方开根号 向量的模长API:Vector3.Magnitude 模的平方API :Vector3.sqrtMagnitude; 向量的方向:Vector3.Normalize 明白向量相加或者相减的意义,并且能够画出来图形 相减(向量的方向会指向被减向量向量的起点是
目录 计算几何 二维几何: 点与向量 线 多边形 圆 半平面交 平面直线图(PSGL) 旋转卡壳 三维几何 基础点面 凸包 计算几何 二维几何: 点与向量 const double eps=1e-10; const double PI=acos(-1.0); struct Point{ double x,y; Point(double x=0,double y=0):x(x),y(
首先,射线检测的API是这样的,网上找了一下,这个图片看得很清楚: 接下来是自己使用这个进行测试 using System.Collections;using System.Collections.Generic;using UnityEngine;//基本语法:public Ray ScreenPointToRay(Vector3 position);//其中参数position为屏幕位置参考点
using System.Collections; using System.Collections.Generic; using UnityEngine; public class OrbitCamera : MonoBehaviour { public Transform TargetLookAt; public float Distance = 10.0f; public float DistanceMin = 5.0f; public float DistanceMax = 15.0f
实现世界坐标的原理是: 世界坐标和UGUI的坐标分属两个坐标系,他们之间是无法进行转换的,需要通过屏幕坐标系来进行转换(因为屏幕坐标是固定的),即先将游戏场景中的世界坐标通过游戏场景Camera转化为屏幕坐标(Camera.main.WorldToScreenPoint(point)),再通过UICamera将该屏幕坐标转换为UI本地
最近在做一款拼图游戏,由于要设计到拖拽判断,UGUI中如何更方便的判断两个图片是否重叠呢?可参考如下方法: public static bool IsRectTransformOverlap(RectTransform rect1, RectTransform rect2) { Vector3[] corners1 = new Vector3[4];
在Unity中有两个forward,一个是Transform.forward一个是Vector3.forward。 对于Vector3来说,它只是缩写。没有其它任何含义。 Vector3.forward ,(0,0,1)的缩写。//在transform.Translate()中使用时,如果不表明坐标系,则为物体的局部坐标,即物体自身的正前方。 Vector3.right, (1,0,0)
using System; using System.Collections; using System.Collections.Generic; /** * 向量的加法和减法运算 */ public class Vector3D { public float x, y, z; public Vector3D(float x=0f,float y =0f,float z= 0f) { this.x = x; this.y = y;
主要有单指移动3D物体、单指旋转3D物体、双指缩放3D物体。 基类 using UnityEngine;using System.Collections;/// <summary>/// 手势操作父类,并用于互斥三种手势/// </summary>public class GestureControl : MonoBehaviour{ //记录手势状态: //-1——没有任何手势在操作
一 :3d空间坐标系 x,y,z 轴 z轴方向确定有两种方式 左手坐标系和右手坐标系 左手坐标系:伸开左手,大拇指指向X轴正方向,食指指向Y轴正方向,其他三个手指指向Z轴正方向。 右手坐标系:伸开右手,大拇指指向X轴正方向,食指指向Y轴正方向,其他三个手指指向Z轴正方向。 3D笛卡尔坐标系:
PC端 using UnityEngine;using System.Collections; public class DragRound : MonoBehaviour { public Transform obj; public float speed = 2; private bool _mouseDown = false; void Update () { if (Input.GetMouseButtonDown(0))
在滑动屏幕的时候,上图中的内容饶圆中心旋转,并且箭头的方向保持不变 每个Item上挂载的脚本: 1 using UnityEngine;2 3 public class ItemTest : MonoBehaviour4 {5 void Update()6 {7 transform.eulerAngles = Vector3.zero;8 }9 } 父结点上挂载的脚本: 1
效果如图: 思路: 主要问题在于生成随机控制点。 1. 以start -> end 为z轴建立坐标系,获得 x_Axis, y_Axis, z_Axis 2.以z轴方向随机长度, x轴y轴随机所在位置 3.用贝塞尔曲线公式生成曲线 public class Test : MonoBehaviour{ public Transform m_Start;
首先需要说明的是,unity 实现游戏物体的移动,其本质是改变transform组件的position。那么下面我们就来看有哪些方法是可以直接或者间接的改变transform.position的。 直接通过Transform组件直接改变。 需要说明的是:unity场景中任何一个游戏对象都会有一个Tra
Vector3.normalized 当前向量是不改变,返回一个新的规范化的向量 Vector3.Normalize 改变当前向量,当前向量长度是变为1 输出 temp = (3.0, 4.0, 5.0) temp = (0.4, 0.6, 0.7)
1.解决的问题 通过OnDrawGizmos 使使用Physics.OverlapSphere 在编辑器或运行模式中可以方便的查看其范围 在Physics.OverlapSphere中加入扇形检测 ,效率更高 使用Debug.DrawLine(transform.position, transform.position+ right, Color.red); 绘制一些红线方便调试 using Sys
1Create Mirror —— 创建镜子 本教程,无需自己找镜子Shader,只需2个脚本即可在Unity中创建一个简单的模拟镜面反射效果 1. 在场景中创建一个 Plane —— 用来作为镜子 2. 同时创建一个材质球 /Material —— 给到 Plane 上 3. 修改新创建的 Material 的 Shader 为 Unlit/Texture
1.归一化中.normalized和.normailze的区别 转载:http://www.it610.com/article/4812836.htm 共同点:实现规范化,让一个向量保持相同的方向,但它的长度为1.0,如果这个向量太小而不能被规范化,一个零向量将会被返回。 不同点:Vector3.normalized的作特点是当前向量是不改变的并且返回一
方法1:使用Vector3.MoveTowards void Update () { float step = speed * Time.deltaTime; gameObject.transform.localPosition = Vector3.MoveTowards(gameObject.transform.localPosition, new Vector3(10, -3, 50), step); } 方法2:使用插值 void Update () { float step = sp
第一篇博客它来了!学习unity的过程中,总会遇到一些零碎的知识点和技巧,在此整理记录,方便日后查看,Unity版本:2018.3.2f1。 因为还是个萌新,如果有写的不对或不好的地方,敬请谅解。 1.使用RuntimeInitializeOnLoadMethod特性的静态方法会在场景加载后直接调用(这个脚本不需要挂
1、 RectTransformUtility.ScreenPointToLocalPointInRectangle public static bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector3 worldPoint); 根据屏幕坐标与相对矩形rect摄像机cam而言来计算出本地坐标。这
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BetweenPoint : MonoBehaviour { public Transform pos1; public Transform pos2; public Transform betPre; // Use this for initialization Vecto
已知两边求夹角 float angle = Quaternion.LookRotation(vector, Vector3.up).eulerAngles; 已知斜边与夹角求临边 vector.x = vector.x * Mathf.Cos(Mathf.Deg2Rad * angle); 向量以Y轴为中心旋转angle Vector3 vector = Quaternion.AngleAxis(angl