Unity_磁铁道具吸收金币效果_054

首先我们先创建一个底面Ground(绿色的Plane),底面上有一个玩家Player(白色的Cube),磁铁Magnet(红色的Cube),还有一堆金币Coin(白色的Sphere)。设置Player的Tag值为Player,设置金币的Tag值为Coin。

效果描述:我们让玩家碰到磁铁的时候开始让玩家吸收金币,如果没有碰到磁铁是不会吸收金币的

这里写图片描述

这里写图片描述
玩家的脚本

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

public class MagnetTest : MonoBehaviour {
    //控制玩家是否可以吸取周围的金币
    private bool isMagnet = false;
	// Use this for initialization
	void Start () {
       
	}
	
	// Update is called once per frame
	void Update () {
        //如果玩家碰到吸铁石的话 就检测玩家周围的所有带有碰撞器的游戏对象
        if (isMagnet)
        {
            //检测以玩家为球心半径是5的范围内的所有的带有碰撞器的游戏对象
            Collider[] colliders = Physics.OverlapSphere(this.transform.position, 5);
            foreach (var item in colliders)
            {
                //如果是金币
                if (item.tag.Equals("Coin"))
                {
                    //让金币的开始移动
                    item.GetComponent<CoinMoveController>().isCanMove = true;
                }
            }

        }
	}

    private void OnTriggerEnter(Collider other)
    {
        if (other.tag.Equals("Magnet"))
        {
            //设置玩家可以吸取周围的金币
            isMagnet = true;
            //销毁吸铁石
            Destroy(other.gameObject);
        }
    }
}

每一个金币上都挂载脚本,还有刚体,只不过没有使用重力如图:
这里写图片描述

金币的脚本

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

public class CoinMoveController : MonoBehaviour {
    //金币移动的的目标
    GameObject target;
    //金币是否可以移动
    public bool isCanMove = false;
    //金币移动的速度
    public float speed = 50;
	// Use this for initialization
	void Start () {
        //获取玩家
        target = GameObject.FindGameObjectWithTag("Player");
	}
	
	// Update is called once per frame
	void Update () {
        if (isCanMove)
        {
            //金币向玩家移动的速度
            transform.position = Vector3.MoveTowards(transform.position,target.transform.position,Time.deltaTime*speed);
        }
	}

    private void OnTriggerEnter(Collider other)
    {
        //如果金币碰到的物体是玩家
        if (other.tag.Equals("Player"))
        {
            //金币碰到玩家后就会销毁金币
            Destroy(gameObject);
        }
    }
}

磁铁上要添加刚体组件但是不勾选重力,碰撞器勾选IsTrigger属性
这里写图片描述

效果展示:
这里写图片描述

相关QQ群 1056320746
文章导航目录

相关公众号
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yy763496668

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值