Unity3D】【Unity基础】Vector3类定义是什么

2020-12-05 13:48发布

16条回答
水默
2楼 · 2020-12-05 15:31

Vector3三维向量:表示3D的向量和点。包含位置、方向(朝向)、欧拉角的信息,也包含做些普通向量运算的函数。


敦敦宁
3楼 · 2020-12-06 09:52

一个结构体,表示一个三维向量,三维坐标(x,y,z)

Kindery
4楼 · 2020-12-06 18:37

是接受在实数R上的两个向量相乘并返回一个实数值标量u的大小、v的大小、u,v夹角的余弦。在u,v非零的前提下,点积如果为负,则u,v形成的角大于90度;如果为零,那么u,v垂直;如果为正,那么u,v形成的角为锐角。两个单位向量的点积得到两个向量的夹角的cos值,通过它可以知道两个向量的相似性,利用点积可判断一个多边形是否面向摄像机还是背向摄像机。如果点积越大,说明夹角越小,则物理离光照的轴线越近,光照越强。

我是大脸猫
5楼 · 2020-12-06 20:09

Vector3类定义


我把所有的基础类放在了名叫geometry的文件中,包含Vector3, Normal3, Point3,  Point2等

类声明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "../../Types.h"
 
class Point3;
class Normal3;
class Matrix;
 
class Vector3 {
public:
    Vector3();
    ~Vector3();
    Vector3(ldouble a);
    Vector3(ldouble a, ldouble b, ldouble c);
    Vector3(const Vector3& v);
    Vector3(const Point3& p);
    Vector3(const Normal3& n);
    Vector3 operator+(const Vector3& v) const;
    Vector3& operator+=(const Vector3& v);
    Vector3 operator-(const Vector3& v) const;
    Vector3& operator-=(const Vector3& v);
    Vector3 operator*(ldouble a) const;
    Vector3& operator*=(ldouble a);
    Vector3 operator/(ldouble f) const;
    Vector3& operator/=(ldouble f);
    Vector3 operator-() const;
    Vector3& operator=(const Vector3& v);
    bool operator==(const Vector3& v) const;
    bool operator!=(const Vector3& v) const;
    ldouble length() const;
    ldouble length_squared() const;
    void normalize();
    friend Vector3 operator*(ldouble a, const Vector3& v);
    friend ldouble operator*(const Vector3& v1, const Vector3& v2);
    friend Vector3 operator^(const Vector3& v1, const Vector3& v2);
    friend Vector3 normalize(const Vector3& v);
    friend std::ostream& operator<<(std::ostream& os, const Vector3& v);
    friend std::istream& operator>>(std::istream& is, Vector3& v);
    ldouble x, y, z;
};

实现部分大家就认真看书自己写一遍,练习练习,书中已经写明白了。

为了大家编译不会报错,头文件里一定要用#ifndef ....防止重复编译报错,之后的每一个头文件都需要这样提前定义,不再重复了。

然后在cpp文件中,要包含pch.h

这些都是基础的多文件管理和编译知识哈,没有通过的,自己多琢磨。我已经说到这份上了,你们肯定没问题的。


老杜
6楼 · 2020-12-07 16:09

是一个向量,表示位置,缩放,大小,朝向

小叮当
7楼 · 2020-12-07 20:27

Unity中的Vector3是一个结构体对象,至于他为什么可以和float类型的数值相乘,是因为他在定义的时候重载了运算符

猜不到结尾
8楼 · 2020-12-10 09:56

Vector他是一种STL的容器

STL提供6大组件,彼此可以组合bai套用:

1. 容器(containers):各种资料结构,如Vector、List、Map等,用来存储各种数据。

2. 演算法(algorithms):各种常用的算法,如sort、search、copy等,它的作用是为提供各种常用的操作。

3. 迭代器(iterators):一个非常重要的组件,用来将容器和演算法联系起来。也就是通常所说的泛型指针。

4. 仿函数(functors):行为类似函数,可作为演算法的某种策略(policy)。

5. 配接器(adapters):一种用来修饰容器或仿函数界面的东西。

6. 配置器(allocators):负责空间配置与管理,用来保证容器空间的正确分配。


梵梵
9楼 · 2020-12-11 09:58

在这里speed是一个标量,movement是一个向量, 结果就是20.0f, 0f, 20.0f, 而这个乘号无非就是算数运算符的重载,当检测到这两个类型的变量相乘时,则使用自己写好的重载函数。

相关问题推荐

  • 回答 17

    还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学  学学js flash as等等  有个梯度就好多了如果要用好unity  不会编程那是不行的  学习的过程中都有个头疼的过程  记住  头越痛  代表你要接受的东西越多  坚持 你的大脑在和知识兼容中:D...

  • unity如何自学Unity3D 2022-01-06 15:24
    回答 18

    可以先思考学习的目的,是什么因素在驱动你。是完成一款作品?进入某个行业?还是探究某类问题?否则和技术相关的知识浩如烟海,很容易迷失在细枝末节上。而要找到动力源头。个人的经验,就是关注一些和自己同方向,同类型的创作者。他们输出的作品会激励你,...

  • 回答 23

    可以让模型师直接作出这样的形状,如果用纯Unity制作,就要用基本游戏对象拼接了,包括楼梯,城堡,都可以拼接出来。正常情况不会这样做,因为不够精美,都是建模师来实现,毕竟Unity不属于专业的建模软件,侧重于实现功能。...

  • 回答 2

    Shader Unlit/Test{Properties{_MainTex(MainTex,2D)=white{}_MainColor(MainColor,COLOR)=(1,1,1,1)_AddTex(AddTex,2D)=white{}_Maxset(Max,Range(0.1,1.0))=0.1}SubShader{Tags{RenderType=Transparent Queue=Tran...

  • 回答 4

    文章主要为大家详细介绍了Unity Shader实现水波纹效果,文中示例代码介绍的非常详细具体代码实现如下:Shader Custom/shuibowen{ Properties{ _MainTex(Base (RGB),2D)=white{} _distanceFactor(Distancefactor,float)=1 _timeFactor(time factor,float)=...

  • 回答 7

    策划的最基本的原则就是:改进缺点,做别人没有做到的。无论游戏策划还是其它策划都是一样!    游戏策划的第二个原则:放飞思想。也许你认为我是说策划们应该充满想象力,能想一些匪夷所思的东西!对不起。不是这意思!一个合格的策划不是为了发泄自己的...

  • 回答 7
    已采纳

    可以多玩一些其它的游戏,看一些科幻电影等,寻找灵感。

  • 回答 3
    已采纳

    游戏架构与设计不纯粹是一门科学,它不需要提出假设或探究真理,也不被逻辑或正规方法的严格标准所束缚。游戏的目的就是通过玩来获得娱乐,因此游戏设计即需要艺术家一样的创造力,也需要工程师一样的精心规划。游戏设计是一门手艺,就像好莱坞的电影摄像或服...

没有解决我的问题,去提问