最新文章
泰课新年学课蛇来运转欢度春节活动
02-01 20:25
共庆2024圣诞、元旦泰课双蛋活动
12-16 10:21
泰课共庆75周年国庆活动!
10-05 21:24
暑假双月联动学习计划 7月15 - 8月21日
07-14 23:09
泰课在线劳动光荣,勤学快乐之五月勤学季活动
04-30 21:19
2024年青春绽放开学季活动
03-11 13:01
Unity2D简单实现物体跟随鼠标移动并旋转
2020年03月01日 15:28
1 点赞
1 评论
更新于 2025-11-21 21:33
在Unity 2D开发中,有时需要实现物体跟随鼠标移动并旋转的效果。下面将详细介绍如何实现这一功能,同时给出具体的代码示例。
效果图
由于这里无法直接展示效果图,你可以根据下面提供的代码在Unity中运行来查看具体效果。
代码实现
以下是实现物体跟随鼠标移动并旋转的完整代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FollowMouse : MonoBehaviour
{
// 该方法在脚本实例被启用时调用,这里不做初始化操作
void Start()
{
// 此处可添加初始化代码
}
// Update方法会在每一帧被调用
void Update()
{
FollowMouseRotate();
FollowMouseMove();
}
// 物体跟随鼠标旋转的方法
private void FollowMouseRotate()
{
// 获取鼠标的屏幕坐标,鼠标坐标的Z轴为0
Vector3 mouse = Input.mousePosition;
// 获取物体的世界坐标,并将其转换为屏幕坐标,以便与鼠标坐标处于同一坐标系
Vector3 obj = Camera.main.WorldToScreenPoint(transform.position);
// 通过屏幕坐标向量相减,得到指向鼠标点的目标向量
Vector3 direction = mouse - obj;
// 将目标向量的Z轴置为0,确保物体的旋转操作在2D平面内进行
direction.z = 0f;
// 将目标向量转换为单位向量,只保留向量的方向信息,去除长度信息
direction = direction.normalized;
// 使物体自身的Y轴与目标向量方向保持一致,实现物体的旋转
transform.up = direction;
}
// 物体跟随鼠标移动的方法
private void FollowMouseMove()
{
// 定义物体的移动速度
float moveSpeed = 3.0f;
// 如果按下鼠标左键,增加物体的移动速度
if (Input.GetMouseButton(0))
{
moveSpeed = 6.0f;
}
// 根据计算得到的移动速度,让物体沿着自身的Y轴方向移动
transform.Translate(Vector3.up * moveSpeed * Time.deltaTime);
}
}
代码解释
Start方法:该方法在脚本实例被启用时调用,通常用于初始化操作。在这个例子中,没有需要初始化的内容,你可以根据实际需求添加相关代码。Update方法:每一帧都会调用该方法,在该方法中调用了FollowMouseRotate和FollowMouseMove方法,确保物体在每一帧都能跟随鼠标进行旋转和移动。FollowMouseRotate方法:- 获取鼠标的屏幕坐标和物体的屏幕坐标。
- 通过向量相减得到指向鼠标的目标向量。
- 将目标向量的Z轴置为0,确保在2D平面内操作。
- 将目标向量转换为单位向量,只保留方向信息。
- 使物体的Y轴与目标向量方向一致,实现旋转。
FollowMouseMove方法:- 定义物体的初始移动速度。
- 如果按下鼠标左键,增加移动速度。
- 根据移动速度和
Time.deltaTime(帧间隔时间),让物体沿着自身的Y轴方向移动。
通过以上代码和解释,你可以在Unity 2D项目中轻松实现物体跟随鼠标移动并旋转的效果。
本文来源:
Unity2D简单实现物体跟随鼠标移动并旋转