直接创建UI拖拽一个图片就可以实现点击屏幕,图片扭头并像点击位置移动的效果,简单粗暴,有兴趣的同学不如试一试
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class VectorDotCross_001 : MonoBehaviour
{
public Image ImageMoveUI; //移动的图片
private Vector3 vector3MousePosition; //鼠标点击坐标
private Vector3 Vector3point; // 图片指向鼠标指针方向
private bool Bol = false;
void Update()
{
if(Input.GetMouseButtonDown(0))
{
RerotateMethod();
}
if (Bol)
{
ReMoveMethod();
}
}
void RerotateMethod()
{
Bol=true;
vector3MousePosition = Input.mousePosition;
Vector3point = vector3MousePosition - ImageMoveUI.transform.position;
float fc = Vector3.Dot(ImageMoveUI.transform.up.normalized,Vector3point.normalized);
//两个向量之间的点乘 求出的是弧度
float rotate = Mathf.Acos(fc) * Mathf.Rad2Deg;
//将点乘求出来的弧度转换成角度
//弧度转角度
Vector3 VecCross = Vector3.Cross(ImageMoveUI.transform.up, Vector3point);
//两个向量之间的叉乘
Debug.Log(VecCross.z);
Vector3 point;
if (VecCross.z < 0) //判断叉乘后值的正负 决定物体从哪个方向来旋转
{
point = Vector3.back;
}
else
{
point = Vector3.forward;
}
//让图片进行旋转
if (rotate > 1f)
{
ImageMoveUI.transform.RotateAround(ImageMoveUI.transform.position, point, rotate);
//RotateAround(a,b,c) 围绕世界坐标a点的b旋转c度
}
}
private void ReMoveMethod()
{
//判断距离
if (Vector3.Distance(ImageMoveUI.transform.position, vector3MousePosition) > 3f)
{
ImageMoveUI.transform.position = ImageMoveUI.transform.position + Vector3point.normalized * 2f;
}
else
{
Bol = false;
}
}
}