Unity>物体的基本属性地形绘制、模块、刚体、碰撞、碰撞检测函数、灯光烘焙、灯光闪烁动画、导航系统、获得鼠标点击坐标、角色移动到鼠标位置、角色动画播放

Unity常用部件/功能

名称英文功能
地面Terrain场景的地面,使用Terrain模块中的小工具可以进行地形的绘制
刚体Rigidbody该模块为物体增加刚体属性,可以通过调节物体的重量摩擦力调整物体的运动轨迹
碰撞Collider为物体增加碰撞属性(不同的碰撞器效果是不一样的,可以更换,不同碰撞器消耗性能也是不一样的box collider性能消耗最小Mesh collider性能消耗最大),想要发生碰撞两个碰撞物体必须都要有collider,并且至少有一个Rigidbody
碰撞检测函数一个脚本文件检测与其他物体的碰撞

碰撞检测函数

    //Collision one call at a time
    private void OnCollisionEnter(Collision collision)
    {
        print("OnCollisionEnterr");
    }

    //collision left once,called once
    private void OnCollisionExit(Collision collision)
    {
        print("OnCollisionExit");
    }

    //Continuous call on collision
    private void OnCollisionStay(Collision collision)
    {
        print("OnCollisionStay");
    }

写好了脚本直接将脚本拖拽添加到物体属性栏就可以了

碰撞信息的获取

	private void OnCllisionEnter(Collision collision)
	{
		print(collision.collider);//与之碰撞物体控制器
		print(collision.collider.name);//获取与之碰撞物体的名字	tag标签
	}

触发检测

勾选触发器选项,物体就从碰撞器改为触发器了
在这里插入图片描述

    private void OnTriggerEnter(Collision collision)
    {}
    private void OnTriggerExit(Collision collision)
    {}
    private void OnTriggerStay(Collision collision)
    {}

Lightmapping(光照烘焙)

光照贴图可以极大地提高游戏性能
1.打开windows>Light>setting窗口
在这里插入图片描述
2.光源模式修改为Baked(烘焙后后期无法改变)或者Mixed(混合的)
在这里插入图片描述
3.将地形/建筑物勾选为静态
在这里插入图片描述
4.点击生成烘焙
在这里插入图片描述

生成粒子效果的火焰

1.在光源处添加粒子系统
在这里插入图片描述2.调整粒子系统参数,使之接近真实火焰粒子效果
在这里插入图片描述
3.创建粒子贴图
准备4x4的动画贴图
在这里插入图片描述
新建一个材料Material,选择Particles/Additive,选择贴图和白色背景
在这里插入图片描述选择粒子特效里的Render,Material选择刚刚制作的material
在这里插入图片描述动画效果修改为4x4贴图
在这里插入图片描述

灯光的闪烁动画

1.选中灯光
2.选择windows>Animation,Create创建保存动画
3.选择Add Property>Light>选择Intensity或者color最为变量创建动画
在这里插入图片描述

导航系统

1.windows>Navigation
2.将地形和背景标记为Navigation static
3.Bake烘焙生成导航网格
4.若有的背景不应在上面移动则选中背景物体Navigation>Object>选择Not Walkable
在这里插入图片描述
5.为人物添加导航组件Nav Mesh Agent

返回鼠标点击坐标

// Update is called once per frame
	void Update () {
        if (Input.GetMouseButtonDown(0))//if mouse left down
        {
            Ray ray; 
            ray= Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))//initialize hit
            {
                print(hit.point);//hit.point
            }
        }
    }

如果Camera.main.ScreenPointToRay(Input.mousePosition);报错空引用是由于camera的tag没有设置为MainCamera

角色移动到鼠标位置

using UnityEngine.AI;//add this namespace

public class Hero : MonoBehaviour {

    public NavMeshAgent agent; 	//make a public agent ,it used to save NavMehAgent`s information 
    
    void Update () {
        if (Input.GetMouseButtonDown(0))//if mouse left down
        {
            Ray ray; 
            ray= Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))//initialize hit
            {
                //  print(hit.point);//hit.point
                agent.SetDestination(hit.point);//set target location
            }
        }
    }
    
}

public对象直接拖拽赋值就可以了
在这里插入图片描述

镜头跟随角色移动

为camera编写脚本

public class CamerMove : MonoBehaviour {

    public Transform hero;//create target to get hero location

    private Vector3 shift;//hoer whit camera

	// Use this for initialization
	void Start () {
        shift = transform.position - hero.position; 
	}
	
	// Update is called once per frame
	void Update () {
        transform.position = hero.position + shift;
	}
}

角色动画播放

1.角色有Animator组件,有contorller对动画进行控制
2.在动画文件夹下创建Animator Contorller为上述组件contorller赋值
3.编辑Animator Contorller
(1)添加视频文件,构建关系
(2)添加动画转变判断条件
(3)进行动画转变条件设置
在这里插入图片描述4.修改hero脚本,传递speed参数

    public NavMeshAgent agent;//get nav mash agent
	public Animator anim;//get animator
	
	void Update()
	{
		anim.setFloat("speed",agent.velocity.magenitude);//set speed
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值