43746人加入学习
(204人评价)
【旧版】Unity初级案例 - 愤怒的小鸟

制作完成于 2018-1-22 本教程基于 Unity 2017.2开发

价格 免费

if(Vector3.Distance(transform.position,rightPos.position)> maxDis){

Vector3 pos = (transform.position - rightPos.position).normalized;

pos*=maxDis;

transform.position = pos + rightPos.position;

}

[展开全文]

距离限定

①求两点间的方向:normalized;

②求两点间的直线距离 Vector.Distance()

 

[展开全文]

Distance()//求两点的距离

normalized//归一化矢量,

[展开全文]

//返回ab之间的距离

public static float Distance(Vector3 aVector3 b);

 

//返回大小 1 的此向量(只读)。

归一化后,向量保持相同的方向,但其长度为 1.0

Vector3.normalized

[展开全文]

单位化向量

获取2点之间的距离 然后 用normalized

单位化向量 返回长度为1 点向量,包含单位的方向。

[展开全文]

Isclick 鼠标跟随

之后需统一坐标系

调整最大位置限定

 

 

[展开全文]

8、距离限定

向量单位化(,,).normalized;

再利用单位化后的向量去x你想要的最大距离

7、将鼠标位置转化为物体位置:

transform.position=Camera.main.ScreenToWorldPoint(Input.mouseposition);

screen是以左下角为坐标原点,世界坐标是以中间点为坐标原点,故用此函数,

转化后物体在2D平面z轴被添加了摄像机的轴,所以还要减掉Camera.main.transform.position.z

[展开全文]

限制最大距离。

和一个具体的位置,进行限制。

如何进行限制,就是,当小鸟位置和规定位置之间距离大于限定位置,获得它的单位话向量,然后*限定长度,然后重新从另个一个点出发,得到小鸟的位置点。。

 

 

[展开全文]

Vector3.Distance();//计算两向量之间位移 

向量.normalized; //向量单位化

[展开全文]

Vector3 是一个类,返回值,入口值都是x,y,z

这里新建的rightPos一定要注意,在Hierarchy面板直接新建empty object的话默认会有z轴的值,这样的话会影响script里的计算,必须把新建的object 的z轴设为0

[展开全文]

private bool isClick=false;

private void OnMouseDown(){

    isClick=true;

}

private void OnMouseUp(){

    isClick=false;

}

private void Update(){

   if(isClick){ 

     //鼠标一直按下的跟随的位置变化

 transform.position=Camera.Main.ScreenToWorldPoint(Input.mousePosition);

//设置规定的跟随长度

 transform.position+=new Vector3(0,0,10);

//计算一个长度

transform.position+=new Vector3(0,0,-Camera.main.transform.position.z);

}

}

想要设置物体的拉拽的距离,给我们的物体设置一个字对象,回到脚本里面,新建两个变量。

private Transform rightPos;

private float maxDis;

在我们的判断跟随中再去做一次判断

用的的方法if(Vector3.Distance(tranform.position,rightpost.position)>maxDis)//判断两个物体间的距离限定{

//我们只需要获取他的方向,长度我们会设置

Vector3 pos=(transform.position-rightPost.postion).normalized;//单位化向量

pos*=maxDis;//最大长度向量

transform.position=pos+rightPos.position;

}

 

 

 

[展开全文]

Vector3.Distance(a,b);//获取两点间距离

position.normalized;//向量化,只要方向

[展开全文]

public Transform rightPos;

public float maxDis=3;

if(vector3.Distance(transform.position,rightPos.postion)>maxDis){//进行位置限定

vector3 pos=(transform.positon-tightPos.position).onrmalized;//单位化向量

pos*=maxDis;//最大长度的向量

transform.position=pos+rightPos.position;

}

 

 

 

[展开全文]

记一下 3d转2d的摄像机的投影改 正交是必须勾上的

[展开全文]

另一种思路:

transform.position = rightPos.position + Vector3.ClampMagnitude(transform.position-rightPos.position, maxDis);

 

[展开全文]

Vector3.Distance

计算里两个向量之间的位移,这个位置是一个长度位置,是float类型的一个正数

 

.normalized  单化向量,这个不会改变原来的值

[展开全文]

OnMouseDown

  • 鼠标按下检测函数

OnMouseUp

  • 鼠标抬起检测函数

单位化向量

  • (a.position-b.postion).normalized
[展开全文]

最大距离限制

单位化向量 。normalizzed

 

[展开全文]

学习到任务7,任务8没看懂      10-30

[展开全文]

授课教师

SIKI学院老师

课程特色

图文(1)
下载资料(1)
视频(44)