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

来源:互联网 发布:淘宝店铺分类条尺寸 编辑:程序博客网 时间:2024/04/28 06:04

首先我们先创建一个底面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属性
这里写图片描述

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

原创粉丝点击