unity如何实现撤退功能

制作思路:

1.首先需要一个空物体进行值传递; 当你移动物体时另一个物体的位置时没有变化的,然后通过if语句来判断两个物体的位置是否相同,不相同就把移动物体的值传递给空物体,然后将值保存到list里。也就是说我每一次移动都有一个位置生成并保存至list里面。但是物体没有移动的值没有放在list里 然后我们在进行当list 的长度为0时的判断就可以实现目标;

 

 

 

 

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

public class ch : MonoBehaviour
{
    private Vector3 sc;
    private Vector3 offsey;
    public GameObject Cube;
    public GameObject moni;
    List<Vector3> number = new List<Vector3>();


    // Start is called before the first frame update
    void Start()
    {
       // moni.transform.position = Cube.transform.position;//让物体与空物体的值相同
        if (number == null)//初始化列表
        {
            number = new List<Vector3>();
        }
        if (moni.transform.position != Cube.transform.position)
        {
            moni.transform.position = Cube.transform.position;
        }
        number.Add(Cube.transform.position);
        Debug.Log(number.Last());
    }

    // Update is called once per frame
    void Update()
    {
       
    }
    void OnMouseUp()
    {

         if (moni.transform.position != Cube.transform.position)
        {
            moni.transform.position = Cube.transform.position;   
        }
            number.Add(Cube.transform.position);
            Debug.Log(number.Last());            
    }

    public void onchchehui_button()
    {
        if (number.Count == 0)
        {
            Cube.transform.position = new Vector3(419, 261, -45);
        }
        if(number.Count >1) {
            number.Remove(number.Last());
            Cube.transform.position = number.Last();
            Debug.Log(number.Last());
            Debug.Log(number.Count());
        }
        //number.Remove(number.Last());
        //Cube.transform.position = number.Last();
        //Debug.Log(number.Last());
        //Debug.Log(number.Count());
    }
     void OnMouseDown()
    {
        sc = Camera.main.WorldToScreenPoint(transform.position);//获取物体的屏幕坐标
        offsey = sc - Input.mousePosition;//获取物体与鼠标在屏幕上的偏移量
    }
    void OnMouseDrag()
    {
      transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition + offsey);//将拖拽后的物体屏幕上坐标还原
    }

}

具体代码如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值