Unity学习日记17(虚拟轴、光)

虚拟轴

Unity学习日记17(虚拟轴、光)_第1张图片

Unity学习日记17(虚拟轴、光)_第2张图片

调用方法:

1.复制Unity虚拟轴详细轴的名称

2.填到GetAxis里,带双引号。一般用float接收 

       float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");

        Debug.Log("H:"+h+"V:"+v);

虚拟按键

Unity学习日记17(虚拟轴、光)_第3张图片

        if (Input.GetButtonDown("Jump"))
        {
            Debug.Log("jump");
        }

Unity学习日记17(虚拟轴、光)_第4张图片

 有些材质不能制作阴影。

可以选择一下几种光

方向光

点光源:MC火把

聚光灯:有点像手电筒

烘焙光、面光:拍证件照的平面射光


烘焙光、面光

:拍证件照的平面射光

1.设置投射平面的属性

Unity学习日记17(虚拟轴、光)_第5张图片

2.放置面光

Unity学习日记17(虚拟轴、光)_第6张图片

3.生成光照

Unity学习日记17(虚拟轴、光)_第7张图片

生成光照(等一小会)

Unity学习日记17(虚拟轴、光)_第8张图片

在场景存放位置附近能看到生成的光照贴图,因为烘焙(?),然后是可以节省性能。

Unity学习日记17(虚拟轴、光)_第9张图片


摄像机 

拍摄指定对象

Culling Mask(剔除遮罩):摄像机不渲染(不拍摄)那个层(layer)的对象物体。例如我这里不勾选UI,那么层级是UI的对象物体将不会被拍摄。

Unity学习日记17(虚拟轴、光)_第10张图片

 Unity学习日记17(虚拟轴、光)_第11张图片


同框出现(仅深度)

解决情况:一个摄像机拍摄不完,但是又想让里面出现的物体同框出现在画面中。

1.出主摄像机外,再添加一个摄像机

Unity学习日记17(虚拟轴、光)_第12张图片

2.修改为“仅深度”,并将该摄像机的深度值修改成比主摄像机更高的值。

图中主摄像机深度为-1,副摄像机的深度为0。

Unity学习日记17(虚拟轴、光)_第13张图片

Unity学习日记17(虚拟轴、光)_第14张图片

 3.效果图

Unity学习日记17(虚拟轴、光)_第15张图片

Unity学习日记17(虚拟轴、光)_第16张图片 4.测试:添加第三个摄像机,摄像机深度为1(前两个为-1和0)

Unity学习日记17(虚拟轴、光)_第17张图片

Unity学习日记17(虚拟轴、光)_第18张图片

 允许添加。

小地图

Unity学习日记17(虚拟轴、光)_第19张图片

俯视、显示区域

Unity学习日记17(虚拟轴、光)_第20张图片


在场景中看到实时的画面——挂载在摄像机上的render textture

1.创建一个摄像机、一个渲染纹理(render textture)

Unity学习日记17(虚拟轴、光)_第21张图片

 2.将渲染纹理挂载到摄像机上,将渲染纹理赋值给场景中的物体

Unity学习日记17(虚拟轴、光)_第22张图片

 Unity学习日记17(虚拟轴、光)_第23张图片

当场景中的摄像机发射移动、旋转变换时,渲染纹理也会实时变化,场景中的被复制了渲染纹理的物体的纹理(画面)也会发生变化。

应用:后视镜、小地图 


简易角色控制移动

挂载脚本+添加charactercontroller

移动的代码是c.simplemove。输入方向。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class movement_Component : MonoBehaviour
{
    private CharacterController c;
    // Start is called before the first frame update
    void Start()
    {
        c = GetComponent();
    }

    // Update is called once per frame
    void Update()
    {
        float horizontal = Input.GetAxis("Horizontal");//横轴
        float vertical = Input.GetAxis("Vertical");//纵轴
        Vector3 dir = new Vector3(horizontal, 0, vertical);//方向
        c.SimpleMove(dir);//移动代码

        Debug.Log(dir);//方向
        Debug.DrawRay(transform.position, dir, Color.red);//射线直观表示方向
    }
}

你可能感兴趣的:(黄静-Unity,学习)