【unity】小白向---简单的物品拾取到手上

本文是一位Unity初学者分享的关于如何实现物品拾取功能的教程。通过给物品添加Rigidbody和SphereCollider组件,当摄像机进入碰撞域时,按特定键即可拾取物品。作者提供了C#脚本代码,详细解释了拾取逻辑,包括进入和退出碰撞域的判断,以及拾取物品后的父子关系设置。
摘要由CSDN通过智能技术生成

    前情提要,本人一个unity初学者,对于如何将物品拾取到手上这一个问题研究了近三天,都仍未明白如何实现。网络上出现的要么是将物品删除,要么就是对物品进行鼠标拾取拖动。

    先来看看实现效果

    对准所要拾取的物品(注意必须是刚体rigidbody组件,且加了colider组件,且要有sphere碰撞域),当摄像机/人物进到碰撞域里面后,可以按下特定的键触发拾取。

拾取对象为图中的绷带

 

显示碰撞域

 

检查器页面(要拾取的必须加上sphere box 和rigidbody!)

   创建物体后,在主相机 main-camara或者说你的人物下建立一个空对象,将空对象移动到你觉得合适的位置(此为“手”,或者物体所要转移的位置)

如图:

建立空对象GameObject后, 创建C#脚本

我这里命名为tack脚本

代码如下

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

public class tack : MonoBehaviour
{

    private bool canCollect = false;
    //判断是否进入碰撞域
    private GameObject target;
    //对象target
    [SerializeField] Transform ItemSlot;
    //“手”
    void Update()
    {
        //一旦检测到按下f且符合能拾取条件,就拾取
        if (Input.GetKeyDown(KeyCode.F))
        {
            if (canCollect)
            {
                target.transform.SetParent(ItemSlot);             //设立父对象
                target.transform.localEulerAngles = Vector3.zero; //设置相对于父对象的角度为0
                target.transform.localPosition = Vector3.zero;    //设置相对于父对象的位置为0
            }
        }
    }

    private void OnTriggerEnter(Collider other)    //碰撞域进入判断
    {
        // 判断名称,设置可拾取状态,并将目前碰撞到的对象引用给予target
        if (other.gameObject.tag == "item")
        {
            canCollect = true;
            target = other.gameObject;
        }
    }

    private void OnTriggerExit(Collider other)    //碰撞域退出判断
    {
        // 退出碰撞箱范围,禁用拾取,解除target的引用
        if (other.gameObject.tag == "Item")
        {
            canCollect = false;
            target = null;
        }
    }
}

结束脚本的代码编写后,将其挂载到主相机或者人物上面。

再将之前创建的空对象GameObject挂载到这个Item Slot上

 

而后运行代码

 

 完成

-----===================================================================-----

  第一次写博,且自学unity时间并不是很长,所以有些专业名字讲述可能不是很到位,欢迎各位批评指正,交流学习!!!

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值