unity手指、鼠标滑动实现物体360度旋转、点击按钮实现物体旋转

这篇具有很好参考价值的文章主要介绍了unity手指、鼠标滑动实现物体360度旋转、点击按钮实现物体旋转。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

手指滑动的程序

先创建一个ObjectRotation 脚本

/* 用于手指滑动屏幕让物体转动 */
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjectRotation : MonoBehaviour
{
    public float rotateSpeed = 0.5f;  //设置默认初始转动速度,但是也可以在面板上直接更改数值

    private Vector2 lastTouchPosition;  //设定一个值用于保存最后位置

    void Update()
    {
        if (Input.touchCount == 1)   //判断是否有触屏动作
        {
            Touch touch = Input.GetTouch(0);

            if (touch.phase == TouchPhase.Moved)
            {
                Vector2 deltaPosition = touch.position - lastTouchPosition;   //
                float deltaX = deltaPosition.x / Screen.width * rotateSpeed;
                float deltaY = deltaPosition.y / Screen.height * rotateSpeed;
                transform.Rotate(Vector3.up, -deltaX, Space.Self);
                transform.Rotate(Vector3.right, deltaY, Space.Self);
            }

            lastTouchPosition = touch.position;
        }
    }
}

之后将该脚本拖动到需要转动的object上

鼠标让物体360转动

因为如果每次都真机模拟回很麻烦,所以我加入了让鼠标代替手指滑动的脚本来代替手指输入
同样的也是先创建一个MouseRow 脚本

/* 用于鼠标控制物体转动 */
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class MouseRow : MonoBehaviour
{
    private Rigidbody rigidbod;
    // Start is called before the first frame update
    void Start()
    {
        //隐藏或者显示物体
        //transform.gameObject.SetActive(true);
        rigidbod = this.GetComponent<Rigidbody>();  
		//此脚本挂在此刚体所属物体物体上,并获得刚体组件

    }
 
    // Update is called once per frame
    void Update()
    {
        rigidbod.constraints = RigidbodyConstraints.FreezeRotationZ;  
		//冻结刚体绕Z轴的旋转,物体只能绕X轴与Y轴旋转
        //如果鼠标左键按下
        if (Input.GetMouseButton(0))
        {
            float speed = 2.5f;//旋转跟随速度
            float OffsetX = Input.GetAxis("Mouse X");//获取鼠标x轴的偏移量
            float OffsetY = Input.GetAxis("Mouse Y");//获取鼠标y轴的偏移量
            transform.Rotate(new Vector3(OffsetY, -OffsetX, 0) * speed, Space.World);//旋转物体
			//获得空间角度
			/* float angleZ = transform.rotation.eulerAngles.z;
			float angleX = transform.rotation.eulerAngles.x;
			float angleY = transform.rotation.eulerAngles.y;
			Debug.Log("Rotation angleZ: " + angleZ);
			Debug.Log("Rotation angleX: " + angleX);
			Debug.Log("Rotation angleY: " + angleY); */
		}
    }
}

点击按钮实现物体沿某轴转动

最后我还需要某笔画沿着坐标旋转,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RowPart : MonoBehaviour
{
    public int nowTurn;      //获得面板上初始化角度的判断
    void Start(){
    }
    //点击按钮后以Z轴旋转90度
    public void Click(){
        
        transform.Rotate(0, 0, 90,Space.Self);  //按照自身坐标的Z轴旋转90度(如果是要按照视界坐标则将pace.Self改成pace.world)
 
        nowTurn++;    //每点击一次增加一
        PlayerPrefs.GetInt("turn",nowTurn);     //运用PlayerPrefs.GetInt保存一个参数,该方法可以实现将值存储在内存中,方便之后读取
        PlayerPrefs.Save();                  //保存运用PlayerPrefs
        
        
        if(nowTurn == 4){                   //如果nowTurn等于4了归零
            nowTurn = 0;
        }
        
    }

}



里面有我的其他参数,如果读者有需要的话请自行删除,最后的这个代码里加入了PlayerPrefs知识,我之后会在其他地方写出来。

脚本里public参数

关于脚本里的public类型的参数都可以直接在面板上修改,我觉得这个真的挺好的
unity手指、鼠标滑动实现物体360度旋转、点击按钮实现物体旋转文章来源地址https://www.toymoban.com/news/detail-509389.html

到了这里,关于unity手指、鼠标滑动实现物体360度旋转、点击按钮实现物体旋转的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity 通过键盘鼠标控制物体移动、旋转、缩放的方法

    在Unity中,使用键盘ADWS键控制物体移动,通过鼠标左键控制物体旋转,鼠标中键控制物体缩放是再常见不过的方法。 方法如下:  效果如下:Unity 通过键盘鼠标控制物体移动、旋转、缩放_哔哩哔哩_bilibili

    2024年02月03日
    浏览(45)
  • 【Unity】摄像机跟随鼠标移动以物体为中心旋转 物体根据视线方向移动

    描述 实现摄像机根据鼠标移动跟随物体旋转,以摄像机前物体为中心,摄像机围绕物体旋转,并使摄像机时刻指向物体 实现效果 Unity 组件设置 Camera 组件设置 Body 组件设置 实现代码 CameraRotateMove.cs 摄像机跟随和旋转 move_better.cs 物体根据按键移动

    2024年02月08日
    浏览(86)
  • 【Unity脚本开源】记录鼠标按下的位置和移动的距离来进行物体的旋转,并在鼠标释放后将物体恢复到初始旋转位置

    ♥️作者:白日参商 🤵‍♂️个人主页:白日参商主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油! 加油! 加油 🎈欢迎评论 💬点赞👍🏻 收藏 📂加关注+! 提针对这个需求,以下是示例脚本代码: ♥️作者

    2024年02月12日
    浏览(40)
  • Three 之 three.js (webgl)鼠标/手指通过射线移动物体的简单整理封装

    目录 Three 之 three.js (webgl)鼠标/手指通过射线移动物体的简单整理封装 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、案例实现步骤 六、关键代码 Three js 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用。 本节介绍, three.js (webgl) 中,

    2024年02月16日
    浏览(55)
  • three.js实现鼠标点击控制物体移动(带动画效果,位置精确)

    通过查阅各种资料,最终确定解决方案,动画效果使用gsap组件库实现,也可不用,代码稍作修改即可。解决鼠标点击坐标偏移问题,复制可直接运行。 完整代码如下:

    2024年02月07日
    浏览(54)
  • Unity实现物体绕指定轴旋转

    在Unity中,我们经常需要控制物体的旋转行为。有时候,我们需要让物体绕指定的轴旋转,而不是默认的旋转轴。在本文章中,我将展示如何使用C#脚本来实现这个功能。 首先,我们需要创建一个空对象,并将它作为父对象,然后将我们想要旋转的物体作为子对象。这样,我

    2024年01月23日
    浏览(44)
  • 【虚幻引擎】UE4/UE5鼠标点击事件实现物体移动

     在UE4/UE5中,引擎有它自己的一套框架体系,虚幻就是基于这一个框架体系来实现的。其中就有PlayerController(玩家控制器),玩家控制器中就有对鼠标的一系列设置,包括显示鼠标,允许点击事件等。  1.创建PlayerController,命名为MyPlayerController 2.打开MyPlayerController,勾选参数

    2024年02月10日
    浏览(97)
  • Unity实现鼠标拖拽多物体(拖拽单物体的拓展)

    学习了B站UP主OneCredit【Unity快速教学】鼠标拖曳甩动物件BV1qK4y1d7iZ的教学视频后 拓展了一下功能,实现多个物体也可以拖拽,互不受影响 主要是做了一个检测,在鼠标上物体才能被拖拽 目录 bool Drag 拖拽物体的实现 解决摄像机视角的影响 绑定刚体,写好需要用到的变量 Dr

    2024年03月24日
    浏览(56)
  • 【UE4】 通过按钮点击实现摄像机的切换 并通过鼠标控制新摄像机的旋转

    首先创建了4个Actor蓝图类 每个蓝图类内只拥有一个摄像机组件 将每个actor蓝图类摆放到场景的合适位置 在关卡蓝图中创建自定义事件,当该事件触发时切换摄像机 创建一个控件蓝图,在控件蓝图中创建如下5个按钮,并创建点击事件。按钮分别表示车上的4个镜头和车外自由

    2023年04月09日
    浏览(56)
  • unity3D 鼠标滚轮实现物体的大小缩放

    鼠标滚轮响应函数是Input.GetAxis(\\\"Mouse ScrollWheel\\\"),函数返回值类型是float,向前滚是返回正数,向后滚是返回负数,且鼠标滚轮滑动单次函数返回值为0.1 利用返回值修改模型transform.localscale,实现模型缩放 鼠标滚轮一直向后滚,会看见模型逐渐变小,当变到很小到消失的时候,

    2024年02月08日
    浏览(71)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包