前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unity - 在鼠标点击的位置放置对象

Unity - 在鼠标点击的位置放置对象

作者头像
hrscy
发布2018-08-30 12:33:04
5.1K0
发布2018-08-30 12:33:04
举报
文章被收录于专栏:hrscyhrscy

目录: 1.基本信息 2.示例工程 3.脚本

目标 这篇博客的主要目标是告诉你使用鼠标点击的位置拾取或放置对象的做法。

你最终会得到下面的效果:

效果图

第一步 基本信息

你可以使用函数实例化多个给定的游戏对象或预制对象。 Instantiate (Object Target, object’s position, object’s rotation)或者Instantiate (Object Target)

如果你想在屏幕上某个点击的位置实例化一个游戏对象,那么首先你就需要找到世界点。

你可以使用下面两种方式来完成这件事:

  1. 如果你正在做一个射击类游戏,为了找到对象被击中的位置,可以调用 hit.point
  2. 你可以使用鼠标的位置很容易转换成世界坐标的位置。

我们将会使用鼠标的位置把对象放置到世界坐标的位置。可以使用下面的函数来获得鼠标的位置:Input.mousePosition,这个函数返回了以像素的为单位的位置。所以我们需要把它转换成世界坐标的位置。为了转换鼠标的位置为世界坐标的位置,我们将使用下面的函数:Camera.main.ScreenToWorldPoint,这个函数会把屏幕的坐标转换成世界坐标。

现在我们可以使用这个位置把对象放置在鼠标点击的地方。现在通过使用这个函数,我们会创建一个简短的演示程序。

第二步 示例工程

打开 unity 然后依次点击 *File >> New Project *

命名为 InstantiateObjectAtSpace 然后从下拉菜单中选择 2D 之后点击创建按钮。创建一个场景,包括主摄像机和一个游戏对象,把这个游戏对象作为一个克隆的目标对象。

你也可以创建一个画布和一个面板组件然后设置任意的图像作为背景。(可选)

当然,图像也可以用作目标对象。为此,我们需要转换图片为 2D 精灵,然后在场景中我们可以使用该图像作为一个游戏对象。

现在,把下面的 C# 脚本应用到摄像机上,来引用我们想要实例化的目标对象。

InstantiateAtMousePosition.cs

代码语言:javascript
复制
using UnityEngine;
using System.Collections;
 
public class InstantiateAtMousePosition : MonoBehaviour {
 
    Vector3 mousePosition,targetPosition;
 
    //To Instantiate TargetObject at mouse position
    public Transform targetObject;
 
    float distance=10f;
 
    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
 
        //To get the current mouse position
        mousePosition=Input.mousePosition;
 
        //Convert the mousePosition according to World position
        targetPosition=Camera.main.ScreenToWorldPoint(new Vector3(mousePosition.x,mousePosition.y,distance));
 
        //Set the position of targetObject
        targetObject.position=targetPosition;
 
        //Debug.Log(mousePosition+"   "+targetPosition);
 
 
        //If Left Button is clicked
        if(Input.GetMouseButtonUp(0))
        {
            //create the instance of targetObject and place it at given position.
            Instantiate(targetObject,targetObject.transform.position,targetObject.transform.rotation);    
        }
    }
}

第三步 脚本

使用鼠标左键来放置对象。

在把对象放置在空间上时,保持按住鼠标左键按下移动对象的位置。

原文作者:Charmi Popat

原文链接

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.06.17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步 基本信息
  • 第二步 示例工程
  • 第三步 脚本
    • 原文作者:Charmi Popat
      • 原文链接
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档