unity鼠标键盘交互

鼠标交互之鼠标拖动物体

将代码放置在被拖动的物体上

public Camera mainCamera;//相机悬挂
 private void OnMouseDrag()//拖动物体的碰撞体
    {
        Ray r = mainCamera.ScreenPointToRay(Input.mousePosition);
        //把相机鼠标坐标位置转换相机射线,生成射线
        RaycastHit hit;
        if (Physics .Raycast (r,out hit, 1000, 1))//遮罩层级为1
        //利用Raycast函数获取碰撞点信息
        {
            transform.position = new Vector3(hit.point.x, hit.point.y + 0.5f, hit.point.z);
            Debug.DrawLine(r.origin, hit.point, Color.red);
        }
    }

 

键盘交互之虚拟轴开关灯

将代码放置在灯上,设置虚拟轴的键盘+-改变数值

   public Light mainLight;
    float moveSpeed = 0.5f;
 void Update()
    {
        float intensity = Input.GetAxis("Light");  //强度
        float targetIntensity = mainLight.intensity + intensity * moveSpeed * Time.deltaTime;//强度在0到1之间缓慢变化
        if(targetIntensity >=0 && targetIntensity <=1.0f)
        {
            mainLight.intensity = targetIntensity;
        }
}

键盘交互之克隆可拖动物体

将代码放置在空物体上

using System.Collections;
public GameObject Crystalsv;//被克隆物品
    int num = 0;//计数
void Update()//实时更新
    {
        
        if (Input.GetKeyDown(KeyCode.N) && num < 4)
        {
            //克隆时 GameObject 的活动状态会维持
            // 参数一:是预制体 参数二:实例化预制体的坐标  参数三:实例化预制体的旋转角度
            GameObject.Instantiate(Crystalsv, gameObject.transform.position, gameObject.transform.rotation);
            num++;
            //在5的范围内

        }
        
    }

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中,可以使用脚本来实现鼠标交互。以下是一些常见的鼠标交互功能的示例: 1. 鼠标点击检测: ```csharp void Update() { if (Input.GetMouseButtonDown(0)) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { // 在这里处理点击到的物体 GameObject clickedObject = hit.transform.gameObject; // ... } } } ``` 上述代码在Update函数中检测鼠标左键点击事件。通过使用Physics.Raycast函数,发射一条射线从鼠标点击位置,检测是否有物体被点击到。如果有,可以根据需求对被点击到的物体进行处理。 2. 鼠标拖拽移动物体: ```csharp private bool isDragging = false; private GameObject draggedObject; void Update() { if (Input.GetMouseButtonDown(0)) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { draggedObject = hit.transform.gameObject; isDragging = true; } } else if (Input.GetMouseButtonUp(0)) { isDragging = false; } if (isDragging && draggedObject != null) { float distance = Camera.main.WorldToScreenPoint(draggedObject.transform.position).z; Vector3 targetPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, distance); Vector3 worldPos = Camera.main.ScreenToWorldPoint(targetPos); draggedObject.transform.position = worldPos; } } ``` 上述代码实现了鼠标左键拖拽物体的功能。鼠标按下时获取点击到的物体,设置isDragging为true,然后在Update函数中不断获取鼠标位置,并将物体位置更新为鼠标位置。 通过编写类似的脚本,你可以实现其他各种鼠标交互功能,如旋转、缩放、点击UI等。根据你的需求和场景,可以结合Unity的输入系统和物理碰撞系统来实现更复杂的鼠标交互功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值