2020-02-02 21:05:20 weixin_43888542 阅读数 79
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

初识unity3D

作为一个只学过一点C++的大二unity小白寒假无聊想尝试一下unity,就把自己的学习历程记录下来啦!

1.1
基础概念

l 坐标:X红色,Y绿色,Z蓝色

l 场景Scenc:一组相关联的游戏对象的集合,通常游戏中每个关卡就是一个场景,用于展现当前关卡中的所有物体。

l 游戏对象:运行时出现在场景中的游戏物体,在Hierarchy面板中,将一个物体拖拽到另一个物体中,子物体将继承父物体移动,但子物体不影响父物体。子物体的position是相对于父物体的,而不是相对global的

l 组件component:游戏对象的功能模块,每个组件都是一个类的实现

Transform变换组件:决定物体的位置、旋转、缩放比

Mesh Filter:网格过滤器,用于从资源中获取网格信息(决定物体的形状)

Mesh Renderer 网格渲染器:从网格过滤器中获得几何形状,再根据变化组件的位置进行渲染(显示)。网格过滤器和网格渲染器联合使用使模型显示到屏幕上。

1.2
面板认识

整体面板布局:为整体美观操作方便,根据学习视频我在右上layout选择2by3 (layout指面板布局)在project右键,选择one column layout 中的纵列布局

Project:工程文件

Hierarchy(层级):游戏对象

inspector检视面板

显示当前选定的游戏对象附加的组件及其属性信息;为重要的游戏物体选择图标

Scene窗口

l 按下鼠标右键拖动鼠标:旋转

l 滑动鼠标滚轮:前进后退

l 按下鼠标滚轮:拖动

l 选中任意物体按下F:居中物体

在这里插入图片描述

l 左上第一个按钮:拖动场景

第二个:拖动物体(相当于inspector面板中的position),此时选中物体+F居中,选中物体+ALT+鼠标左键围绕旋转,Alt+鼠标右键放大缩小

第三个:旋转物体(相当于inspector面板中的rotation)

第四个:缩放比例(变化大小相当于inspector面板中的scale)

l Pivot(轴心)单击一下变成center(中心)(只在scene面板有用)

Pivot指的是轴心,是模型在建模软件中构建时指定的,可以在建模软件中进行更改,如果选择了场景中的多个物体的话,则坐标是第一个选中的物体的Pivot坐标。

Center指的是中心,是在Unity中根据模型的mesh信息计算得到的中心位置,是所有物体共同的中心,如果同时选中了多个物体,则坐标是所有模型共同参与计算出来的坐标。

在实际应用中,我们在操作物体的时候如果我们操作的是多个物体,则如果选择pivot,对物体进行旋转时,每一个物体均会围绕自己的pivot中心点进行旋转;而如果选择了center后对多个物体进行旋转,则所有物体会围绕整体的center进行旋转。

l Local单击一下变成local

Local(局部):物体的自身坐标,可以理解为上下左右

Global(全局):物体的世界坐标,可以理解为东南西北

当cube旋转时,Global的坐标朝向是不变的,Local的坐标朝向与物体的旋转朝向一致

l 视图

Persp:透视(3D)

Iso:平面视图(2D) (单击中心黄色小方块切换)
在这里插入图片描述
在这里插入图片描述

2019-11-27 14:07:50 SilverFoxGame 阅读数 205
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

现在来做点别的东西。Nintendo Switch上刚推出的《超级马里奥》中,有一些关卡混合了2D和3D的画面,这种效果十分让人印象深刻。如何在Unity中实现这个效果呢?

正常情况下,摄像机会直接渲染到你的屏幕。我们如何能让摄像机看到内容并显示在另一个对象上呢?你可能注意到摄像机有一个属性,叫目标纹理(Target Texture)。

 

我们要在Asset文件夹里新建一个渲染纹理(Render Texture),添加到摄像机上。你可以在项目窗口依次点击Create -> Render Texture来新建渲染纹理。创建好后,你可以将它拖到摄像机上的Target Texture属性中。摄像机这时会将所有对象都渲染到这个纹理上。如果现在进入运行模式,游戏画面将呈现为一片漆黑,因为目前没有激活的摄像机渲染到屏幕上。

 

现在,我们要加入一个新摄像机到场景中,摄像机的Projection属性为Perspective。在摄像机前添加一个新的3D对象,本例中,我们添加的是圆柱体。然后创建新材质,其Shader属性设为Unlit/Texture,再将刚刚创建的渲染纹理拖到这个材质上的Main Texture部分。

 

得到的效果如下图。

这样一来,我们就实现了类似《超级马里奥》中的2D和3D混合效果,是不是很简单!

 

资源下载

项目《超级马里奥》下载地址:

https://pan.baidu.com/s/1f3aoPLFr2vPk_ioaN1EyKQ

_ioaN1EyKQ

 

2015-01-16 21:10:36 jingjingcrystal 阅读数 16933
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

unity学习,希望我的博客能给喜欢unity的朋友带来帮助

今天完成了游戏的第一个关卡,觉得和别的组不同之处之一就是按钮的不同,登录注册等按钮我没用GUI的Button来做,而是用GUITexture来做,做出来的效果就是当鼠标没在按钮上时是一个状态,当鼠标移动到按钮上是又是另一个状态,当鼠标点击按钮时,又会变另一状态,这不是特效,其实是定义了一组照片和用鼠标事件来做的。下面就让我们来看看鼠标事件和鼠标事件的应用吧。

鼠标事件:

        鼠标事件,都是当鼠标和gui或者碰撞体(Collider)交互时候触发。需要说明的是drag其实就是鼠标down后up之前持续每帧都会发送此消息。

        OnMouseDown:当鼠标上的按钮被按下时触发的事件;

        OnMouseDrag:当用户鼠标拖拽GUI元素或碰撞体时调用;

        OnMouseEnter:当鼠标进入物体范围时被调用;

        OnMouseExit:当鼠标退出时被调用;

        OnMouseOver:当鼠标移动到某对象的上方时触发的事件;

        OnMouseUp:当鼠标按键被松开时触发的事件。

        鼠标事件的应用,代码如下:

  1. using UnityEngine;
  2. using System.Collections;

  3. public class GUI_Login_Button : MonoBehaviour {
  4.     //声明定义GUITexture
  5.     GUITexture guitexture;
  6.     
  7.     //声明一组图片数组
  8.     public Texture[] login_Button_Texture;
  9.     
  10.     //声明两个标志位flag和flag2
  11.     bool flag;
  12.     bool flag2;
  13.         
  14.     //初始化,获取GUITexture
  15.     void Start () {
  16.             guitexture=GetComponent<GUITexture>();
  17.         }
  18.     
  19.     //当鼠标进入物体范围时被调用
  20.     void OnMouseEnter() { 
  21.           //图片变换
  22.           guitexture.texture=login_Button_Texture[1];
  23.     }
  24.     
  25.      //当鼠标放到图片上方时触发事件
  26.      void OnMouseOver() { 
  27.         
  28.         //当标志位为真时
  29.         if(flag)
  30.         {
  31.              //图片变换
  32.              guitexture.texture = login_Button_Texture[2];
  33.              
  34.              //if嵌套
  35.              //因为登陆界面的按钮连接着数据库,所以要判断输入的内容在数据库中不为空
  36.              //if括号内的内容是调用的Users类里面的Login方法
  37.              if (new Users().Login(Login.str, Login.str1).Name != null)
  38.              {
  39.                  //跳转到ProgressBar工程
  40.                   Application.LoadLevel("ProgressBar");
  41.              }
  42.              //否则,当name为空时,flag2为ture,执行下面的触发器
  43.              else {
  44.                  flag2 = true;
  45.              }
  46.              //if嵌套完成
  47.          
  48.         }
  49.         else
  50.         {
  51.            //否则,图片变换
  52.             guitexture.texture=login_Button_Texture[1];
  53.         }   
  54.     }
  55.     void OnGUI() {
  56.         if (flag) {
  57.             //标志位判断
  58.             //设置字体的颜色和创建Label,放置校验
  59.             GUI.color = Color.red;
  60.             GUI.Label(new Rect(560, 360, 300, 50), "密码或账号错误,请重新输入!");
  61.         }
  62.     }
  63.     //当鼠标退出时被调用
  64.     void OnMouseExit() { 
  65.         guitexture.texture=login_Button_Texture[0];
  66.     }
  67.     //当鼠标上的按钮被按下时触发的事件
  68.     void OnMouseDown() {
  69.         flag = true;
  70.     }
  71.     //当鼠标按键被松开时触发的事件,当鼠标松开时,跳转界面
  72.     void OnMouseUp()
  73.     {
  74.         flag = false;
  75.     }
  76. }
         这样就完成了按钮变换的效果,朋友们有兴趣的可以试试哦。

   更多精彩请关注:http://www.gopedu.com/


没有更多推荐了,返回首页