超详细,unity如何制作人物行走的遥杆?

这篇具有很好参考价值的文章主要介绍了超详细,unity如何制作人物行走的遥杆?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

在游戏中,移动遥杆是一种常见的用户界面元素,它允许玩家通过触摸或鼠标输入来控制游戏对象的移动。移动遥杆通常由一个圆形或方形的背景和一个可以拖动的小球(称为拇指杆)组成。玩家可以通过拖动拇指杆来控制游戏对象的移动方向和速度。

超详细,unity如何制作人物行走的遥杆?

超详细,unity如何制作人物行走的遥杆?

超详细,unity如何制作人物行走的遥杆?


方法

1.新建第一个canvas图片,用于显示遥杆区域

超详细,unity如何制作人物行走的遥杆?


2.新建第二个canvas图片,用于显示遥杆控制点

超详细,unity如何制作人物行走的遥杆?
超详细,unity如何制作人物行走的遥杆?


3.给第二个图片挂载脚本GameTouch,Tag设置为“Player”

以下是对GameTouch脚本每行代码的注释:

using UnityEngine;
using UnityEngine.EventSystems;  // 引入Unity事件系统命名空间

public class GameTouch : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
	Vector2 startPos;  // 记录遥杆起始位置
	public Vector2 Pos;  // 记录遥杆的移动值

	public void OnBeginDrag(PointerEventData eventData)  // 当玩家开始拖拽遥杆时执行
	{
		startPos = transform.position;  // 记录遥杆的起始位置
	}

	public void OnDrag(PointerEventData eventData)  // 当玩家拖拽遥杆时执行
	{
		Pos = eventData.position - startPos;  // 计算遥杆的移动值
		transform.position = Vector2.ClampMagnitude(Pos, 30) + startPos;  // 移动遥杆并限制其最大移动距离
	}

	public void OnEndDrag(PointerEventData eventData)  // 当玩家停止拖拽遥杆时执行
	{
		Pos = Vector2.zero;  // 重置遥杆的移动值
		transform.position = startPos;  // 将遥杆移回起始位置
	}
}

这个脚本实现了一个基本的移动遥杆,当玩家拖拽遥杆时,它会记录遥杆的移动值,并将遥杆移动到合适的位置。这个脚本实现了三个接口:IBeginDragHandler、IDragHandler和IEndDragHandler,这些接口都是Unity事件系统中的接口,用于处理用户输入事件。当玩家开始拖拽遥杆时,OnBeginDrag()函数将记录遥杆的起始位置;当玩家拖拽遥杆时,OnDrag()函数将计算遥杆的移动值,并将遥杆移动到合适的位置,并限制其最大移动距离;当玩家停止拖拽遥杆时,OnEndDrag()函数将重置遥杆的移动值,并将遥杆移回起始位置。

超详细,unity如何制作人物行走的遥杆?


4.新建一个cube,作为遥杆的控制对象,挂载脚本ObjectMover

using UnityEngine;

public class ObjectMover : MonoBehaviour
{
	public float speed = 5f; // 物体移动的速度
	private GameTouch gameTouch; // 存储GameTouch组件的引用

	private void Start()
	{
		GameObject player = GameObject.FindGameObjectWithTag("Player"); // 获取标签为"Player"的物体
		if (player != null) {
			gameTouch = player.GetComponent<GameTouch>(); // 获取GameTouch组件
		}
		if (gameTouch == null) {
			Debug.LogError("GameTouch component not found on Player object!");
		}
	}

	private void Update()
	{
		// 获取遥杆的移动值
		float horizontal = gameTouch.Pos.x;
		float vertical = gameTouch.Pos.y;

		// 计算物体的移动方向
		Vector3 direction = new Vector3(horizontal, 0f, vertical).normalized;

		// 计算物体的移动距离
		float distance = Mathf.Clamp(gameTouch.Pos.magnitude, 0f, 30f) / 30f;
		distance *= speed * Time.deltaTime;

		// 移动物体
		transform.position += direction * distance;
	}
}

超详细,unity如何制作人物行走的遥杆?
定义了一个名为ObjectMover的类,该类继承自MonoBehaviour,表示它是一个Unity组件。

声明了一个公有的浮点型变量speed,用于控制物体移动的速度。

声明了一个私有的GameTouch类型变量gameTouch,用于存储GameTouch组件的引用。

Start()方法在脚本启动时被调用。在该方法中,通过标签查找到一个名为"Player"的游戏对象,并获取其上的GameTouch组件的引用。

如果找到了GameTouch组件,则将其赋值给gameTouch变量;否则输出错误信息。

Update()方法在每一帧都被调用。在该方法中,获取gameTouch的Pos属性,该属性存储了一个遥杆的移动值。

根据遥杆的移动值计算出物体的移动方向,使用Vector3的normalized方法将其标准化。

计算物体的移动距离,使用Mathf.Clamp方法将移动值限制在0到30之间,并乘以speed和Time.deltaTime,确保移动平滑。

将物体沿着移动方向乘以移动距离进行移动,更新物体的位置。


5.调整摄像机位置,便于观察

超详细,unity如何制作人物行走的遥杆?


演示

超详细,unity如何制作人物行走的遥杆?文章来源地址https://www.toymoban.com/news/detail-447187.html


到了这里,关于超详细,unity如何制作人物行走的遥杆?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AE duik插件运用-人物行走动画

    效果预览 文件超过大小,暂无法预览 视频教程地址: 链接:https://pan.baidu.com/s/1dDu7h4n5Fg-Av_FTnXKAqA  提取码:x48v duik插件的使用,人物行走动画的运动规律; 完成人物运动动画; 将主体物和场景的动画进行完美搭配; 理解人物行走运动动画规律,调节运动曲线; 注意图形的

    2024年02月06日
    浏览(30)
  • unity如何创建一个角色(实现角色的行走、奔跑)

    1、首先从资源商店下载导入一个模型,这里选择的是下面这个模型(用了很多,这个比较好用,还是免费的),下载后导入模型。  2、创建一个平面,打开刚才导入的模型的预制体,把角色拖到场景中并命名为Player,打开的文件目录如下  3、创建一个角色控制器(右键-Cr

    2024年02月11日
    浏览(39)
  • 用Unity3D制作FPS游戏的学习笔记————人物移动、利用鼠标实现视角转动和人物跳跃(含人物悬空不掉落修复)

    前言: 这是我第一次发布文章,此文章仅供参考,我也是刚学习接触untiy,在制作项目的过程中将有用的写下来记一记,以便自己之后能回头看看,各位大佬轻点喷,若有错误请麻烦积极提谢谢各位。该文章参考自B站UP主蔡先森_rm-rf发布的 【第一人称射击游戏教程2.0【已完结

    2024年04月27日
    浏览(41)
  • ThreeJS案例一——在场景中添加视频,使用人物动作以及用键盘控制在场景中行走的动画

    首先我们需要两个模型,一个是场景模型,另一个是人物模型。 人物模型我这里用的Threejs官网中的给的模型,名称是 Xbot.glb 。 当然人物模型也可以自己去这个网站下载sketchfab,下载后给模型添加动画mixamo 下载模型动画 先让入你的模型 选择正确的模型文件格式 这里注意一

    2024年02月12日
    浏览(33)
  • 【超级详细】Unity战斗模式(三)人物掉血处理+死亡动画处理

    双击 攻击动画clip ,打开 Events 区域,在时间轴上单击右键,选择合适帧,也就是在动作发出那一刻我们希望会执行某一方法。 可以通过下面的动画预览区进行预览那一帧的效果,蓝色的竖线就是我们创建好的帧。 改名字为 Attack ,记得 Apply 同时意味着我们在脚本里对应的方

    2024年02月12日
    浏览(31)
  • unity,如何让人物随着鼠标滑动而转向?

    unity,如何让人物随着鼠标滑动而转向? 这段代码是一个基于Unity引擎实现玩家移动的脚本,主要作用如下: 定义并初始化变量: speed:玩家移动速度; movement:玩家的移动方向; playerAC:玩家的动画控制器; playerRigidbody:玩家的刚体组件; floorMask:用于射线检测的地板层

    2024年02月07日
    浏览(86)
  • 【unity学习笔记-如何给动态的人物添加碰撞体】

    前景提要 如题,项目中想实现和人物进行简单的互动,比如点击他的手臂的时候他会播放手臂的动作,点击脚的时候播放预设的和脚有关的动画 之前我的实现方式是十分暴力的在人物模型中对应的部位添加一个子物体,给子物体添加正方体/圆体这种规则的碰撞体,然后因为他是在

    2023年04月08日
    浏览(69)
  • Unity第三人称如何让人物始终朝向相机方向移动

    不知道如何制作简易第三人称相机的同学可以看我的这篇文章:Unity如何实现第三人称相机跟随 我们在开发第三人称游戏过程中很容易遇到:我们的玩家角色,他面对北方,背后有一台摄像机,正巧也是面对北方。现在,他向右转90度,面对东方。此时如果让他向前走,那么

    2024年02月06日
    浏览(59)
  • 【unity造车轮】3种实现虚拟移动摇杆控制人物移动的方法(实操加详细讲解,全网最全最易理解)

    素材 继承ScrollRect,自己手戳代码,我愿意称之为最简单的实现

    2024年02月14日
    浏览(29)
  • Unity用AI制作天空盒,并使用,详细图文教程

    先上我自己做的效果 首先登录AI制作的网站,打开就可以用,不需要登录 这是网址:https://skybox.blockadelabs.com/ 1.创建新的 2.基于现有的创作 3.输入描述 4.选定创作的风格 5.开始创作 6.创作结束后,可以直接下载一个jpg文件 把图片导入到unity 设置下图片的参数,如下图

    2024年02月06日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包