unity,如何让人物随着鼠标滑动而转向?

news/2024/10/18 10:28:48/

介绍

unity,如何让人物随着鼠标滑动而转向?

在这里插入图片描述


方法

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;public class PlayerMovement : MonoBehaviour
{public float speed = 6f;            // 玩家移动速度private Vector3 movement;           // 玩家的移动方向private Animator playerAC;          // 玩家的动画控制器private Rigidbody playerRigidbody; // 玩家的刚体组件LayerMask floorMask;// 初始化void Start(){// 获取动画控制器和刚体组件playerAC = GetComponent<Animator>();playerRigidbody = GetComponent<Rigidbody>();floorMask = LayerMask.GetMask("floor");}// 固定时问见新void FixedUpdate(){float h = Input.GetAxisRaw("Horizontal");float v = Input.GetAxisRaw("Vertical");// 移动 横向 和纵向Move(h, v);// 检测是否在移动,播放相应动画Animating(h, v);turning();}// 检测是否在移动,播放相应动画void Animating(float h, float v){// 只有h不等于0或者v不等于0才应该是移动bool walking = h != 0f || v != 0f;playerAC.SetBool("iswalking", walking);}// 移动void Move(float h, float v){// 设置移动的方向向量movement.Set(h, 0f, v);movement = movement.normalized * speed * Time.deltaTime;// 使用Rigidbody组件移动玩家playerRigidbody.MovePosition(transform.position + movement);}void turning(){Ray cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit cameraHit;if (Physics.Raycast(cameraRay, out cameraHit, 100f, floorMask)){Vector3 playerToMouse = cameraHit.point - transform.position;playerToMouse.y = 0f;Quaternion newQuaternion = Quaternion.LookRotation(playerToMouse);playerRigidbody.MoveRotation(newQuaternion);}}}

这段代码是一个基于Unity引擎实现玩家移动的脚本,主要作用如下:

  1. 定义并初始化变量:
  • speed:玩家移动速度;
  • movement:玩家的移动方向;
  • playerAC:玩家的动画控制器;
  • playerRigidbody:玩家的刚体组件;
  • floorMask:用于射线检测的地板层。
  1. 实现移动和旋转:
  • Move()函数:接收横向和纵向的输入,设置玩家的移动方向向量,然后使用Rigidbody组件移动玩家;
  • turning()函数:使用射线检测地板,获取玩家需要朝向的位置,然后使用Rigidbody组件旋转玩家。
  1. 播放动画:
  • Animating()函数:根据玩家是否在移动来设置iswalking布尔变量,然后将其传递给动画控制器,控制播放相应的动画。
  1. 响应玩家输入:
  • FixedUpdate()函数:固定的物理计算时间间隔内检测玩家的输入,调用Move()函数移动玩家,调用Animating()函数播放相应动画,调用turning()函数旋转玩家。

这段代码实现了基于键盘输入的玩家移动和旋转,并根据玩家是否在移动来播放相应的动画。



http://www.ppmy.cn/news/71921.html

相关文章

0基础转行居然拿到9.5K!尘埃深处是繁花,强者从未停下!

人总是越长大越胆小&#xff0c;很多事情不敢做&#xff0c;以后就更不敢做了。 为梦想颠簸的人有很多&#xff0c;可能不差你这个&#xff0c;不如意的时候我们都会想要放弃&#xff0c;但是生活不是一个点&#xff0c;它是一条长长的线&#xff0c;唯有行动&#xff0c;才能摆…

Day 2 学习软件测试的必备知识——(开发模型、测试模型、软件测试分类、阶段划分)

Day 2 学习软件测试的必备知识——(开发模型、测试模型、软件测试分类、阶段划分) 文章目录 Day 2 学习软件测试的必备知识——(开发模型、测试模型、软件测试分类、阶段划分)软件开发模型1. 瀑布模型瀑布模型核心思想瀑布模型的地位**优缺点****使用范围**2. 快速原型模型…

初识redis【redis的安装使用与卸载】

一.redis的概念 Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。在redis官网中对redis的描述是这样的&#…

区块链技术在医疗数据共享中的应用

随着医疗信息化技术的日益发展&#xff0c;医疗数据的存储和管理变得更加重要。传统的数据存储方法面临着信息泄露、数据篡改等安全隐患。为了解决这些问题&#xff0c;人们开始探索将区块链技术应用于医疗数据共享&#xff0c;以提高数据安全性和可靠性。本文将探讨区块链技术…

10.文件操作

CSAPP笔记 1.shell程序设计 2.内存管理 3.链接库 4.文件操作 5.多进程 6.多线程 7.网络编程 8.makefile 9.调试技巧与调试工具 文章目录 CSAPP笔记前言一、基础知识1.采用系统调用实现文件复制 总结问题 前言 学习文件的创建、打开、读写、关闭操作。 学习目录的创建、扫面、…

上传成功但是在app管理中心找不到版本提交的解决方法

转载&#xff1a;Appuploader 常见错误及解决方法 Appuploader常见错误及解决方法 问题解决秘籍 遇到问题&#xff0c;首先请登录苹果开发者官网检查账号是否有权限&#xff0c;是否被停用&#xff0c;是否过期&#xff0c;是否有协议需要同意&#xff0c;并且在右上角切换账…

Ubuntu系统远程桌面安装运行记录

Ubuntu系统远程桌面安装运行记录 分别测试了20.04和22.04两个版本 一、widows远程 参考连接https://blog.csdn.net/qq_50263172/article/details/128465149 安装步骤如下&#xff1a; sudo apt-get install xrdpsudo apt install tightvncserversudo apt-get install xubuntu-…

数据结构与算法之动态规划: Leetcode 63. 不同路径 II (Typescript版)

不同路径 II https://leetcode.cn/problems/unique-paths-ii/ 描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Fini…