学习游戏开发,做自己的氪佬(Unity-视频/&角色控制)

我突然发现,学习好像比玩游戏有趣一些。

至于我为什么突然会有这样的想法,请不要问我,去问一下竞技类游戏优秀的匹配机制

好好想一想,我最近能从游戏中得到的,只有来自队友的折磨和不断干瘪下去的钱包。

而学习呢,我可以从中获得知识,这些知识可以提升自己例如找到更好的工作赚更多的钱。又或者像我一样学习游戏开发方面的知识,自己开发一款像瓦洛兰特一样的游戏。

然后把游戏里面的对手全部换成简单人机。

当然我还是很喜欢游戏的,不只是单纯喜欢玩,还有了解背后的故事等等。

优秀的故事剧情像巫师三、荒野大镖客2这类游戏能带给我的感动是我无法在其他地方感受到的。甚至是像UnderTale这样画风比较简单的游戏也能让我沉浸许久。

话都说到这份上了,我多少得再打一把游戏后回来学习。

回到正题

今天因为文章写得比较早(主要是被游戏赶回来了),所以要学习两个部分,分别是游戏中的视频播放和如何让unity中的角色动起来

让我们开始今天的折磨吧!



一、视频播放(P36)

视频播放和上一篇笔记中所提到的音频播放在代码中其实是差不多的,在这里随意找一个MP4文件进行演示。

将视频放进unity的方法中很简单,只需要在右侧项目视图下方点击鼠标右键 选择在资源管理器中显示 将视频文件拖拽到Asset文件夹中即可


1-1.在游戏场景中播放

在项目视图中鼠标右键创建一个渲染器纹理,然后创建一个游戏对象,例如想要在一个平面上播放。

创建平面后添加一个名为VideoPlayer的组件,这个组件很像之前提到的播放音频的组件AudioSource。unity中播放音频的片段被称为AudioClip,而播放视频的片段叫做VideoClip。


1-1.1 videoplayer组件设置

回到平面上的videoplayer组件中,只需要将视频文件直接拖拽进视频剪辑中就好。然后在下方的渲染模式中更改为渲染器纹理,把渲染器纹理拖拽到目标纹理。

1

在这一步之后,视频中的所有内容都会显示在渲染器纹理当中,只需要将纹理拖拽到想要播放的对象上就行。


1-2. UI播放方式

当然还有其他的播放方式,创建UI:原始图像 将渲染器纹理拖拽到RawImage的纹理中


1-3.脚本控制视频播放

创建一个C#脚本名为VideoTest,将脚本挂载到有VideoPlayer的同一对象上。

因为脚本中是没有Video,需要引用一个名称空间:

using UnityEngine.Video;

然后在下方就可以声明:

private VideoPlayer player;

接下来获取组件播放器:

player = GetComponent();

在获取了组件之后就可以进行控制了:

if(Input.GetMouseButtonDown(0));

{

if(play.isPlaying){

play.Pause();}

}

其实原理和音频播放的一样,可以随意输入暂停停止重头播放等的指令。

阶段代码展示:



二、角色控制(P37)

终于!要开始学习角色的控制,在Unity中角色的控制也会有多种,一共有三种只要选一种就 行


像我这种又没钱 又还没学到物理系统那一步的人来说,这会就老老实实用unity自带的角色控制器进行操作。


2-1. 角色控制组件

创建一个平面将其放到世界坐标轴(0,0,0),保证其方向正确(红色x轴是右边,蓝色z轴是前方)

再创建一个随意对象当作角色,放在 平面上,然后搭载一个名为角色控制Character Controller的组件(保持默认设置)


2-2. 脚本中控制角色

创建一个名为PlayerControl的脚本,然后挂载在对象上。

第一步还是 要在脚本中声明,然后获取这个组件:

Private CharacterController player;

接下来获取组件(在start中)

player = GetComponent();

获取组件之后就可以进行移动代码的编写了(在Update中)

在编写代码之前要知道Unity中角色的移动一般根据两个轴,一个是水平轴一个是垂直轴


2-2.1 水平轴

之前虚拟轴的时候提到过,左(-1)右(1)和不动(0)

float horizontal = Input.GetAxis("Horizontal");


2-2.2 垂直轴

float vertical = Input.GetAxis("Vertical");


2-2.3 创建为方向向量

在获取了两个轴向之后,就能知道按下了哪些按键(按下A就是向左走)

Vector3 dir = new Vector3 (horizontal,0,vertical);

Vector3中一般有3个向量,分别是X,Y,Z

这里是想让水平轴horizontal来影响X左右移动,让垂直轴Vertical来影响 Z轴的移动,至于Y轴上天入地的东西先不用管。

顺便 将向量都画出来出来,位置的话用自身的位置。

Debug.DrawRay(transform.position,dir,Color.red)

然后回到Unity中运行,这里要注意的是得点击下方的游戏视图窗口 。

其实可以看到在 按键盘上的WASD任意方向之后会有一条红色的射线出来。


2-3. 朝向移动

在unity中有两种方法:一种是move,move是不受重力的影响;另一种是 SimpleMove,这个是受重力影响的。

player.SimpleMove(dir);

这里的dir就是让对象朝着方向移动就行,也就是当在键盘上按哪个键就朝哪个方向

可以看到在Unity运行中,随意按WASD会按照上下左右进行移动。

当然看着这个移动速度有点慢好像,这里就可以添加个速度:

player.SimpleMove(dir*2);

让其以两倍的速度进行移动

当然还有上述所提到的重力



今天的课程就到这里结束了!

当然对我来说今晚还要准备开始写第二个公众号的内容,等我回头再把另一个公众号贴进来 。 另一个公众号主要是讲非软件相关知识,例如我这几天在研究的装机电脑配件什么的。

我要去吃心心念念的炒牛河了,大伙下篇笔记见,拜了个拜!



原课程链接:

https://www.bilibili.com/video/BV1gQ4y1e7SS/?spm_id_from=333.337.search-card.all.click


Unity VideoPlayer:

https://blog.csdn.net/weixin_43367805/article/details/93178830


Unity物理系统:

https://docs.unity3d.com/cn/2021.3/Manual/PhysicsSection.html


本期代码汇总

video部分:


角色控制器部分:


我突然发现,学习好像比玩游戏有趣一些。

至于我为什么突然会有这样的想法,请不要问我,去问一下竞技类游戏优秀的匹配机制

好好想一想,我最近能从游戏中得到的,只有来自队友的折磨和不断干瘪下去的钱包。

而学习呢,我可以从中获得知识,这些知识可以提升自己例如找到更好的工作赚更多的钱。又或者像我一样学习游戏开发方面的知识,自己开发一款像瓦洛兰特一样的游戏。

然后把游戏里面的对手全部换成简单人机。

当然我还是很喜欢游戏的,不只是单纯喜欢玩,还有了解背后的故事等等。

优秀的故事剧情像巫师三、荒野大嫖客2这类游戏能带给我的感动是我无法在其他地方感受到的。甚至是像UnderTale这样画风比较简单的游戏也能让我沉浸许久。

话都说到这份上了,我多少得再打一把游戏后回来学习。

回到正题

今天因为文章写得比较早(主要是被游戏赶回来了),所以要学习两个部分,分别是游戏中的视频播放和如何让unity中的角色动起来

让我们开始今天的折磨吧!



一、视频播放(P36)

视频播放和上一篇笔记中所提到的音频播放在代码中其实是差不多的,在这里随意找一个MP4文件进行演示。

将视频放进unity的方法中很简单,只需要在右侧项目视图下方点击鼠标右键 选择在资源管理器中显示 将视频文件拖拽到Asset文件夹中即可


1-1.在游戏场景中播放

在项目视图中鼠标右键创建一个渲染器纹理,然后创建一个游戏对象,例如想要在一个平面上播放。

创建平面后添加一个名为VideoPlayer的组件,这个组件很像之前提到的播放音频的组件AudioSource。unity中播放音频的片段被称为AudioClip,而播放视频的片段叫做VideoClip。


1-1.1 videoplayer组件设置

回到平面上的videoplayer组件中,只需要将视频文件直接拖拽近视频剪辑中就好。然后在下方的渲染模式中更改为渲染器纹理,把渲染器纹理拖拽到目标纹理。

1

在这一步之后,视频中的所有内容都会显示在渲染器纹理当中,只需要将纹理拖拽到想要播放的对象上就行。


1-2. UI播放方式

当然还有其他的播放方式,创建UI:原始图像 将渲染器纹理拖拽到RawImage的纹理中


1-3.脚本控制视频播放

创建一个C#脚本名为VideoTest,将脚本挂载到有VideoPlayer的同一对象上。

因为脚本中是没有Video,需要引用一个名称空间:

using UnityEngine.Video;

然后在下方就可以声明:

private VideoPlayer player;

接下来获取组件播放器:

player = GetComponent();

在获取了组件之后就可以进行控制了:

if(Input.GetMouseButtonDown(0));

{

if(play.isPlaying){

play.Pause();}

}

其实原理和音频播放的一样,可以随意输入暂停 停止重头播放等的指令。

阶段代码展示:



二、角色控制(P37)

终于!要开始学习角色的控制,在Unity中角色的控制也会有多种,一共有三种只要选一种就 行


像我这种又没钱 又还没学到物理系统那一步的人来说,这会就老老实实用unity自带的角色控制器进行操作。


2-1. 角色控制组件

创建一个平面将其放到世界坐标轴(0,0,0),保证其方向正确(红色x轴是右边,蓝色z轴是前方)

再创建一个随意对象当作角色,放在 平面上,然后搭载一个名为角色控制Character Controller的组件(保持默认设置)


2-2. 脚本中控制角色

创建一个名为PlayerControl的脚本,然后挂载在对象上。

第一步还是 要在脚本中声明,然后获取这个组件:

Private CharacterController player;

接下来获取组件(在start中)

player = GetComponent();

获取组件之后就可以进行移动代码的编写了(在Update中)

在编写代码之前要知道Unity中角色的移动一般根据两个轴,一个是水平轴一个是垂直轴


2-2.1 水平轴

之前虚拟轴的时候提到过,左(-1)右(1)和不动(0)

float horizontal = Input.GetAxis("Horizontal");


2-2.2 垂直轴

float vertical = Input.GetAxis("Vertical");


2-2.3 创建为方向向量

在获取了两个轴向之后,就能知道按下了哪些按键(按下A就是向左走)

Vector3 dir = new Vector3 (horizontal,0,vertical);

Vector3中一般有3个向量,分别是X,Y,Z

这里是想让水平轴horizontal来影响X左右移动,让垂直轴Vertical来影响 Z轴的移动,至于Y轴上天入地的东西先不用管。

顺便 将向量都画出来出来,位置的话用自身的位置。

Debug.DrawRay(transform.position,dir,Color.red)

然后回到Unity中运行,这里要注意的是得点击下方的游戏视图窗口 。

其实可以看到在 按键盘上的WASD任意方向之后会有一条红色的射线出来。


2-3. 朝向移动

在unity中有两种方法:一种是move,move是不受重力的影响;另一种是 SimpleMove,这个是受重力影响的。

player.SimpleMove(dir);

这里的dir就是让对象朝着方向移动就行,也就是当在键盘上按哪个键就朝哪个方向

可以看到在Unity运行中,随意按WASD会按照上下左右进行移动。

当然看着这个移动速度有点慢好像,这里就可以添加个速度:

player.SimpleMove(dir*2);

让其以两倍的速度进行移动

当然还有上述所提到的重力



今天的课程就到这里结束了!

当然对我来说今晚还要准备开始写第二个公众号的内容,等我回头再把另一个公众号贴进来 。 另一个公众号主要是讲非软件相关知识,例如我这几天在研究的装机电脑配件什么的。

我要去吃心心念念的炒牛河了,大伙下篇笔记见,拜了个拜!



原课程链接:

https://www.bilibili.com/video/BV1gQ4y1e7SS/?spm_id_from=333.337.search-card.all.click


Unity VideoPlayer:

https://blog.csdn.net/weixin_43367805/article/details/93178830


Unity物理系统:

https://docs.unity3d.com/cn/2021.3/Manual/PhysicsSection.html


本期代码汇总

video部分:


角色控制器部分:




展开阅读全文

页面更新:2024-03-01

标签:角色   向量   纹理   脚本   组件   平面   对象   方向   代码   游戏   视频

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top