Unity3d C# 鼠标点击下物体,物体匀速旋转180°,要看到旋转过程,这个代码怎么写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3d C# 鼠标点击下物体,物体匀速旋转180°,要看到旋转过程,这个代码怎么写?相关的知识,希望对你有一定的参考价值。

    将我下面的脚本挂到场景中

    创建目标物体Cube  这里使用射线检测物体名字实现的

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

    public class RotateCube : MonoBehaviour

        bool startRotate;
        Transform aimCube;
        float speed = 1f;    
        void Update()
        
            if (Input.GetMouseButtonDown(0))
            
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                if (Physics.Raycast(ray, out hit, 100))
                
                    if (hit.collider.gameObject.name == "Cube")
                    
                        aimCube = hit.collider.transform;
                        startRotate = true;
                    
                
            

            if (startRotate && aimCube.localEulerAngles.y < 180)
            
                aimCube.Rotate(Vector3.up * speed);
            
        

参考技术A 你可以使用第一人称视角,是Unity自带的,在Assets->Import Package->Character Control,导入这个包就好了,然后选择First Pers。。。那什么的,拖进层次视图中就行了。希望能帮到你。如果你想学习的话,你可以参考那个脚本。其次,你也可以去网上找些资料,像雨松的Unity3D游戏开发,应该比较适合你,里边有相关的代码。 参考技术B using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class zhuandong : MonoBehaviour 
    private float jiaoDu;
    private int speed=30;

    private bool isClick;
 void Start () 
        jiaoDu = 0;
        isClick = false;
    
 
 void Update () 
        jiaoDu += Time.deltaTime * speed;
        if (isClick)
        
            if (jiaoDu < 180)
            
                transform.Rotate(Vector3.up * Time.deltaTime * speed);//rotate实在原有基础下继续运行的
            
            else isClick = false;
        
      
 
 //点击物体运行的函数
    private void OnMouseDown()
    
        jiaoDu = 0;
        isClick = true;
    

将脚本挂在物体上就行了,通俗易懂的代码,有什么不懂的请回复

unity中实现物体的拖拽到指定位置的功能

unity中实现鼠标点击生成物体a(a物体是20个中的任意一个),再次点击生成物体b(b物体也是20个中的任意一个),然后实现鼠标拖拽b到a的位置 小于一定距离时自动吸附到a上 类似于三维软件中的捕捉功能 求C#代码 思路也可以

实现方式如下:

    先确保物体a、b都有碰撞器。

    点击鼠标首先判断是否生成过物体a,如果未生成过则生成a,否则继续判断是否生成过物体b。

    当物体a和b都生成了之后。然后在在Update函数中调用Input.getmousebuttondown,由相机向鼠标点击处发射射线,判断是否选中了物体b。

    由Input.getmousebutton获取持续拖动状态并移动物体b,然后判断Input.getmousebuttonup判断结束点位置是否足够贴近物体a,是则将物体b放置物体a位置即可。

参考技术A 先确保物体a、b都有碰撞器
点击鼠标首先判断是否生成过物体a,如果未生成过则生成a,否则继续判断是否生成过物体b。
当物体a和b都生成了之后
然后在在Update函数中调用Input.getmousebuttondown,由相机向鼠标点击处发射射线,判断是否选中了物体b,由Input.getmousebutton获取持续拖动状态并移动物体b,然后判断Input.getmousebuttonup判断结束点位置是否足够贴近物体a,是则将物体b放置物体a位置追问

不需要用到数组吗 起初单个已知的物体实现了 但是a和b都是随机的 把我搞蒙了 以为需要加入数组

追答

你可以用数组存一个物体a的序列然后随机取出一个就行了啊
这个没什么影响的

本回答被提问者采纳

以上是关于Unity3d C# 鼠标点击下物体,物体匀速旋转180°,要看到旋转过程,这个代码怎么写?的主要内容,如果未能解决你的问题,请参考以下文章

unity3d物体旋转

我想写个unity3D C#脚本用鼠标拖动物体,该怎么办呀,

你好,请问在UNITY3D中如何实现用鼠标左键拖拽控制一个组合物体的旋转啊?

unity3d中c#如何修改物体局部的颜色

UNITY3d实现鼠标点击物体播放声音的效果

unity3d中,怎样让鼠标点击一个物体后,摄像机就去拍摄这个物体?