unity开发知识点小结03

news2025/7/18 10:50:07

物理关节

铰链关节
按照固定的轴进行旋转
在这里插入图片描述

弹簧关节
两物体之间加装弹簧
在这里插入图片描述

固定关节
两个物体相关联
在这里插入图片描述

射线检测

通过射线检测,我们可以实现用鼠标来移动物体,当我们用鼠标点击场景中的某一位置,摄像机就发出一条射线,并且通过射线碰撞检测可以获取位置,同时就可以实现物体的移动。创建需要根据射线位置来变化位置的物体,并且为此物体编写脚本

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

public class RayTest : MonoBehaviour
{
    
    void Start()
    {
        //创建射线方法一  从零点开始,向上的方向创建上射线
        //Ray ray = new Ray(Vector3.zero,Vector3.up);    
    }

    void Update()
    {
        //方式二从摄像机发射射线
        if (Input.GetMouseButtonDown(0)) {
            //按下鼠标后摄像机发射射线
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            //声明一个碰撞信息类
            RaycastHit hit;
            //进行碰撞检测
            bool res = Physics.Raycast(ray,out hit);
            //如果发生碰撞的情况下,hit就有内容
            if (res == true) { 
                Debug.Log(hit.point);
                transform.position = hit.point;
            }
            //多检测    100:碰撞距离  1<<10:只检测第十图层的物体
            RaycastHit[] hits = Physics.RaycastAll(ray,100,1<<10);
        }   
    }
}

制作简易动画

旧版动画组件制作
首先我们要为产生动画的物体添加动画组件
在这里插入图片描述

在动画制作窗口创建动画
动画其实就是物体的位置,旋转,缩放等参数的变化

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

public class Animation : MonoBehaviour
{
    void Start()
    {
        
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            GetComponent<Animation>().Play();
        }
    }
}

新版动画制作
首先和上面一样我们为需要实现动画的物体添加动画组件,但现在要添加的是Animator,然后创建动画,新版的动画制作不同于旧版的点主要是,新版使用动画控制器进行各个动画的控制,因此要先创建动画控制器,将动画控制器挂载到物体上,在创建各个动画,之后在打开物体的动画控制器

在这里插入图片描述
用代码控制动画的播放

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

public class CubeConllTest : MonoBehaviour
{
    private Animator animator;
    void Start()
    {
        //获取动画组件
        animator= GetComponent<Animator>();
    }

   
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) {
            animator.Play("left");
        }
    }
}

脚本控制动画的切换
在动画控制器中加入我们需要的动画,并且为切换的动画设置过渡,并且我们为过渡动画设置一个触发器Trigger,并且将触发器添加到要出发动画的Conditions中
在这里插入图片描述
在这里插入图片描述
接下来为物体编写脚本,实现动画的脚本式切换

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

public class PickUp : MonoBehaviour
{
   
    void Start()
    {
        
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.F)) {
            //触发pickup参数
            GetComponent<Animator>().SetTrigger("pickUp");
        }
    }
}

脚本实现人物动画切换以及人物移动

本例实现人物的站立和跑步两个动作,并且移动时人物播放跑步动画,静止的时候播放站立动画

首先我们将站立和跑步动画导入人物的动画器控制器中,为两个动画创建过渡,并且设置Bool类型变量run来判断是否为运动状态,并且将run的true,false两种情况分别设为两个动画过渡的Conditions
在这里插入图片描述
接下来为人物编写脚本实现通过按下上下左右键来实现人物移动和动画转换

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

public class peopleRun : MonoBehaviour
{
    private Animator animator;
    void Start()
    {
        animator = GetComponent<Animator>();
    }

    
    void Update()
    {
        //获取水平轴
        float horizontal = Input.GetAxis("Horizontal");
        //获取垂直轴
        float veritial = Input.GetAxis("Vertical");
        //创建方向向量
        Vector3 dir = new Vector3(horizontal,0,veritial);
        //当用户按下方向按键
        if (dir != Vector3.zero)
        {
            //更改人物朝向
            transform.rotation = Quaternion.LookRotation(dir);
            //播放移动动画
            animator.SetBool("run", true);
            //实现人物移动
            transform.Translate(Vector3.forward * 2 * Time.deltaTime);
        }
        else {
            //松开方向键恢复静止动画
            animator.SetBool("run",false);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/395745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zookeeper从安装到入门

文章目录什么是zookeeperzookeeper的安装启动zookeeper并检查是否安装完成zookeeper的一些操作指令zookeeper的JavaAPI建立连接创建节点查询节点修改节点删除节点事件监听分布式锁集群leader选举规则集群角色什么是zookeeper ZooKeeper是一个分布式的&#xff0c;开放源码的分…

Fastjson 1.2.24 命令执行漏洞复现-JNDI简单实现反弹shell

文章目录前言一、环境搭建二、漏洞复现准备三、漏洞复现四、不成功的原因&#xff08;排查&#xff09;&#xff1a;总结前言 网上文章千篇一律&#xff0c;导致很多人都只会一种方法&#xff0c;只要有一种办法就所有人跟着这个办法去做了&#xff0c;新建java文件&#xff0…

Azure Function App Deploy Issue

问题&#xff1a;之前一直用vs code 的 Azure Function extension 工具部署&#xff0c;没有什么问题。直到3月份发现 vs code显示部署成功&#xff0c;但是通过 https://<function_name>.scm.azurewebsites.net/DebugConsole 查看上传后的 dll 文件&#xff0c;dll文件根…

每日学术速递3.8

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Unleashing Text-to-Image Diffusion Models for Visual Perception 标题&#xff1a;释放用于视觉感知的文本到图像扩散模型 作者&#xff1a;Wenliang Zhao, Yongming Rao, Zuya…

【maven 学习记录】

maven 学习记录一、maven基础1. maven是什么2. maven的作用3. maven的下载安装4. maven仓库5. maven坐标6. 第一个maven项目 手工实现7. maven插件8. 依赖管理9. 生命周期二、maven进阶一、maven基础 1. maven是什么 maven的本质是一个项目管理工具&#xff0c;将项目开发和管…

mac电脑解决Error: command failed: npm install --loglevel error --legacy-peer-deps

使用vue create xxx创建vue3项目的时候报错。 解决步骤&#xff1a; 1.sudo npm cache clean --force 2.再次创建就可以成功 补充&#xff1a;网上搜到很多方法&#xff0c;都尝试失败&#xff0c;因为遇到需要打开.vuerc,.npmrc的情况&#xff0c;记录一下怎样找到文件 1. 尝…

xshell的复制ssh渠道和复制会话是什么意思

xshell的复制ssh渠道和复制会话是什么意思1、复制ssh渠道1.1、只打开一个标签页时1.2、复制ssh渠道后1.3、复制第2个ssh渠道后2、复制会话3、两个ssh进程分别复制ssh渠道4、总结1、复制ssh渠道 1.1、只打开一个标签页时 ssh进程有1个&#xff0c;pid是98959。用户是root、终端…

工业级64 位AM6231ASGGGAALW/AM6232ATCGGAALW【处理器】AM6234ATCGGAALW

工业级64 位AM6231ASGGGAALW/AM6232ATCGGAALW【处理器】AM6234ATCGGAALW说明&#xff1a;低成本的AM62x Sitara MPU系列应用处理器专为Linux 应用开发而设计。凭借可扩展的ArmCortex -A53性能和嵌入式功能&#xff0c;例如:双显示支持和3D图形加速&#xff0c;以及广泛的外围设…

Flutter-自定义图标

虽然Flutter有许多内置的icon图标&#xff0c;但是有些特殊功能的话&#xff0c;需要自定义图标或者需要在iconfont 阿里巴巴的图标库里找对应合适的图标。 第一步&#xff1a;在iconfont 阿里巴巴里搜索想要的图标并加入到购物车&#xff0c;点击下载代码后&#xff0c;会生成…

2023增加收入的最佳销售聊天机器人

哈佛大学的研究表明&#xff0c;快乐的客户花费更多。聊天机器人可以很大程度提高客人体验感&#xff0c;可以增加您的销售额。现在&#xff0c;快来get市场上最好的销售聊天机器人并增加您的收入&#xff01; 一、什么是销售聊天机器人&#xff1f; 销售聊天机器人是一种自动…

使用 Wall 教你搭建 照片墙 和 视频墙

下载 Github:https://github.com/super-tongyao/wall 国内仓库&#xff08;不推荐&#xff0c;只做加速访问&#xff0c;无编译包和发行版&#xff0c;以github仓库为准&#xff09;&#xff1a;https://gitee.com/Super_TongYao/wall 推荐github仓库&#xff0c;下载最新版…

演化算法:乌鸦搜索算法 (Crow Search Algorithm)

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 在机器学习中&#xff0c;我们所要优化的问题很多时候难以求导&#xff0c;因此通常会采用一些演化算法&#xff08;又称零…

C++——模板

文章目录1 泛型编程2 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的实例化2.3.1 隐式实例化2.3.1.1 定义2.3.1.2 代码演示2.3.1.3 运行结果2.3.1.4 缺点2.3.2 显式实例化2.3.2.1 格式2.3.2.2 代码演示2.3.2.3 运行结果2.4 模板参数的匹配原则2.4.12.4.22.4.33 类模板…

并发编程的三大挑战之原子性及其解决方案

目录 一、原子性问题 1、带来原子性问题的原因 2、如何解决线程切换带来的原子问题 2.1、使用synchronized关键字来保证 2.2、使用CAS来保证原子性 2.3、使用lock锁来保证 一、原子性问题 1、带来原子性问题的原因 线程切换是带来原子的根本原因&#xff0c;java的并发程…

proteus光敏电阻电路的arduino仿真

虽然Fritzing0.9.10有了仿真的功能&#xff0c;但都是测试板&#xff0c;能够仿真的很有限&#xff0c;所以还是要借助proteus来仿真。这里&#xff0c;我们来实先一个简单的光明电阻的仿真电路。本篇博文&#xff0c;重点演示proteus仿真arduino光敏电阻&#xff0c;arduino采…

Kerberos 域委派攻击之基于资源的约束性委派

CSDN自动迁移博客文章注意区别&#xff1a;约束性委派 不能跨域进行委派&#xff0c;基于资源的约束性委派可以跨域和林如果约束性委派&#xff0c;必须拥有 SeEnableDelegationPrivilege 权限&#xff0c;该特权是敏感的&#xff0c;通常仅授予域管理员。为了使用户/资源更加独…

DDD领域驱动设计初探

DDD 强调领域模型要兼顾业务和技术两个视角。 我们怎么用一套系统化的方法&#xff0c;抽丝剥茧、一步一步地把需求落实到代码呢&#xff1f;咱们看看下面这张图&#xff0c;它表示了领域驱动设计中的主要流程。 领域驱动设计主要的开发流程你可以看到&#xff0c;在整个开发流…

IDEA 实现热部署(社区版)

前言 为什么要热部署&#xff1f; 开发环境下&#xff0c;我们经常对项目代码进行变动&#xff0c;如果每次都重新启动应用会浪费我们大量时间&#xff0c;为此就产生了热部署的方案&#xff0c;可以在不重启的情况下使用新代码。 热部署为了解决的问题有两个: 在开发的时候…

华为网工入门之eNSP小实验(6)--OSPF(一)基础概念及单区域配置

OSPF OSPF属于典型的链路状态路由协议链路状态路由协议的四个步骤: 1.相邻的建立邻居关系2.邻居间的链路间的状态信息(LSA)交互和同步LSDB(链路状态数据库)3.优选路径运算 (SPF算法计算)4.根据最优路径生成路由表项加载到路由表 目前针对ipv4协议使用的是OSPF Version 2(RFC23…

测试测开面试要知道的那些事01

列表与元组的区别列表是动态数组&#xff0c;它们可变且可以重设长度&#xff08;改变其内部元素的个数&#xff09;。元组是静态数组&#xff0c;它们不可变&#xff0c;且其内部数据一旦创建便无法改变。元组缓存于Python运行时环境&#xff0c;这意味着我们每次使用元组时无…