unity开发知识点小结03

news/2024/11/25 16:54:59/

物理关节

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

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

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

射线检测

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

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.ppmy.cn/news/30853.html

相关文章

流量与日志分析

文章目录1.流量与日志分析1.1系统日志分析1.1.1window系统日志与分析方法1.1.2linux 系统日志与分析方法1.2 web日志分析iis 日志分析方法apache日志分析**access_log****error_log**nginx日志分析tomcat 日志分析主流日志分析工具使用1.流量与日志分析 日志&#xff0c;是作为…

数据结构|链表

概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。单链表的形式就像一条铁链环环相扣它与顺序表最大的不同是&#xff0c;单链表的数据存储是在不连续的空间&#xff0c;存储的数据里面含有…

Unity iOS 无服务器做一个排行榜 GameCenter

排行榜需求解决方案一(嗯目前只有一)UnityEngine.SocialPlatformsiOS GameCenterAppStoreConnect配置Unity 调用(如果使用GameCenter系统的面板&#xff0c;看到这里就可以了&#xff09;坑(需要获取数据做自定义面板的看这里)iOS代码Unity 代码吐槽需求 需求&#xff1a;接入…

【Linux】进程间通信概念匿名管道

文章目录进程间通信介绍进程间通信的本质进程间通信的目的进程间通信的分类管道匿名管道匿名管道原理pipe函数匿名管道通信的4情况5特点读取堵塞写入堵塞写端关闭读端关闭总结进程间通信介绍 进程间通信简称IPC&#xff08;Interprocess communication&#xff09;:进程间通信…

Python每日一练(20230308)

目录 1. Excel表列名称 ★ 2. 同构字符串 ★★ 3. 分割回文串 II ★★★ &#x1f31f; 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 1. Excel表列名称 给你一个整数 columnNumber &#xff0c;返回它在 Excel 表中相对应的列名称。 例如&#xff1…

HDFS写数据流程

HDFS写数据流程&#xff0c;如图所示。 1&#xff09;客户端通过Distributed FileSystem模块向NameNode请求上传文件&#xff0c;NameNode检查目标文件是否已存在&#xff0c;父目录是否存在。 2&#xff09;NameNode返回是否可以上传。 3&#xff09;客户端请求第一个 Block…

vue3的v-model指令

1. 普通input输入框双向绑定 <template><!-- 1. 普通input输入框双向绑定 --><!-- 其实等价于&#xff1a;<input :value"title" update:modelValue"newTitle>titlenewTitle"/> --><input type"text" v-model&qu…

Java中对象的finalization机制

本篇文章我们详细介绍Java中对象的finalization机制&#xff0c;以及怎么使用finalize()方法&#xff0c;将即将被回收的对象&#xff0c;拉回来。1、finalization机制Java语言提供了对象终止&#xff08;finalization&#xff09;机制来允许开发人员提供对象被销毁之前的自定义…