Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >u3d 两个同样obj查找子物体

u3d 两个同样obj查找子物体

作者头像
立羽
发布于 2023-08-24 05:43:04
发布于 2023-08-24 05:43:04
16100
代码可运行
举报
文章被收录于专栏:Unity3d程序开发Unity3d程序开发
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
public class Test : MonoBehaviour {

    public GameObject m_tar;

    public GameObject m_tarShadow;
    Vector3 m_tarPos = Vector3.zero;
    Quaternion m_tarQua = Quaternion.identity;
    Dictionary<Transform, Vector3> m_mapPosReset = new Dictionary<Transform, Vector3>();
    Dictionary<Transform, Quaternion> m_mapQuaReset = new Dictionary<Transform, Quaternion>();

    Dictionary<Transform, Transform> m_mapTrans = new Dictionary<Transform, Transform>();

    // Use this for initialization
    void Start () {
        DOTween.Init();
        ChildPosInit2();
    }
	
	// Update is called once per frame
	void Update () {
	
	}

    void ChildPosInit()
    {
        m_tarPos = m_tar.transform.position;
        m_tarQua = m_tar.transform.rotation;
        foreach (var render in m_tar.GetComponentsInChildren<Transform>())
        {
            m_mapPosReset[render.transform] = render.transform.position;
            m_mapQuaReset[render.transform] = render.transform.rotation;
        }
    }

    public void ChildPosResetV1()
    {
        m_tar.transform.DOMove(m_tarPos, 0.5f);
        m_tar.transform.DORotate(m_tarQua.eulerAngles, 0.5f);  
        foreach (var it in m_mapPosReset)
        {
            it.Key.DOMove(it.Value, 0.5f);
        }
        foreach (var it in m_mapQuaReset)
        {
            it.Key.DORotate(it.Value.eulerAngles, 0.5f);
        }

    }

    public void ChildPosReset()
    {
        foreach (var it in m_mapTrans)
        {
            it.Key.DOMove(it.Value.transform.position, 0.5f);
            it.Key.DORotate(it.Value.eulerAngles, 0.5f);
        }

    }

    void ChildPosInit2()
    {
        foreach (var it in m_tar.GetComponentsInChildren<Transform>())
        {
            if (it != m_tar.transform)
            {
                string path = GetParName(it.transform);
                Debug.Log(path);
                m_mapTrans[it.transform] = m_tarShadow.transform.FindChild(path);
            }
        }
    }

    string GetParName(Transform tran)
    {
        if (tran.parent == m_tar.transform)
        {
            return tran.name;
        }
        else
        {
            return GetParName(tran.parent) + "/" + tran.name;
        }
    }
}

注意:子物体不能重名

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
u3d DoTween子物体回到原位
立羽
2023/08/24
2720
Unity3d:摇杆移动,第三人称镜头控制
两个手指都没按在UI上,取这一帧与上一帧的距离的平方差值,不能取平方根插值,多了性能消耗
立羽
2023/08/24
2800
unity3d:向量计算,摄像机与目标位置
立羽
2023/08/24
2340
unity3d模拟Scene视图camera控制
中键滚动,camera前进后退 右键拖动,camera原地旋转 中键拖动,camera上下左右平移
立羽
2023/08/24
2650
Unity【DoTween】- 如何使Transform Tween动画序列可编辑
使用DoTween的动画序列功能时,我们需要编写类似这样的代码: DOTween.Sequence() .Append(transform.DOMove(new Vector3(1f, 2f, 3f), 1f)) .Append(transform.DORotate(new Vector3(0f, 0f, 0f), 1f)); 本文介绍的内容可以将DoTween的这种动画序列在编辑器中进行编辑,如图所示: 实现代码: using System; using DG.Tweening;
CoderZ
2022/08/29
6410
Unity【DoTween】- 如何使Transform Tween动画序列可编辑
unity3d:保持V字型队形,按路径点移动
思路: 1.分为领导者,追随者,追随点。 2.先创建领导者。根据剩下人数的多少,再在左右创建追随者和追随点,成v字排列。追随点是领导者的子物体 3.领导者按照路径点移动 4.追随者追的追随点移动,如果距离过远,要提高速度
立羽
2023/08/24
2610
unity3d:保持V字型队形,按路径点移动
“谁做虚拟仿真不得遇到个拆分模型呀”——分享如何使用Unity拆分3D模型
在仿真开发中,会遇到将模型进行移动、放大、旋转、拆分、合并等操作,其他的移动、放大、旋转都有比较多的例子进行参考,今天就分享一下如何将物体进行拆分
恬静的小魔龙
2022/08/07
1.4K0
“谁做虚拟仿真不得遇到个拆分模型呀”——分享如何使用Unity拆分3D模型
MMORPG游戏开发实战(一)
新建目录工程 关于工程的文件夹创建 代码注释修改 可以百度,这种代码不需要记忆。一大堆,直接用就可以 using System; using System.Collections; using System.IO; using UnityEngine; using UnityEditor; public class ScriptsCreat : UnityEditor.AssetModificationProcessor { public static void OnWillCreateAss
孙寅
2020/06/02
9740
MMORPG游戏开发实战(一)
Unity3d EasyAR开发案例系列教程
这篇文章介绍如何使用EasyAR.unitypackage配置EasyAR ---------- 参考资料 1、EasyAR 初学者入门指南 http://forum.easyar.cn/portal
恬静的小魔龙
2020/03/09
3K0
Unity3d EasyAR开发案例系列教程
Unity基础(17)-四元数与欧拉角与矩阵
Quaternion中存放了x,y,z,w四个数据成员,可以用下标来进行访问,对应的下标分别是0,1,2,3 其实最简单来说:四元数就是表示一个3D物体的旋转,它是一种全新数学数字,甚至不是复数。 四元数其实就是表示旋转。
孙寅
2020/06/02
5.3K0
Unity基础(17)-四元数与欧拉角与矩阵
u3d拖动摄像机视角与双指缩放
立羽
2023/08/24
3680
DOTween教程☀️DOTween的使用教程
当前dotween动画没播放完,便再次播放有冲突的操作,如连续多次播放、正播、倒播,导致显示不正常或报错。
星河造梦坊官方
2024/08/16
5890
DOTween教程☀️DOTween的使用教程
unity3d:路径点移动,使用dotween(模拟蝴蝶飞舞)
立羽
2023/08/24
8680
unity3d:路径点移动,使用dotween(模拟蝴蝶飞舞)
VR开发--虚拟与现实游戏(VR-狩猎)
1、PC平台 2、资源(UI素材,粒子特效,动画等) 3、导入SteamVR 4、那个运行HTC Vive设备最少970显卡
孙寅
2020/06/02
7150
Unity3d:实现自己的Dotween,C#扩展方法,插值旋转,插值移动
C#扩展方法第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。
立羽
2023/08/24
5300
Unity3d:实现自己的Dotween,C#扩展方法,插值旋转,插值移动
unity3d:CatmullRom采样曲线,沿着曲线移动
立羽
2023/08/24
2740
unity3d:CatmullRom采样曲线,沿着曲线移动
ARFoundation☀️ 五、放置AR物体
星河造梦坊官方
2024/08/15
1750
Unity基础(6)--资源管理(3)小赛车竞技
引言:今天突发奇想,想搞一个车的项目,话不多说,直接下载,但是之前对它一无所知。好在通过简单的测试,已经解决。运行效果还不错。上图是运行效果
孙寅
2020/06/02
7910
鼠标控制物体旋转、移动、缩放(Unity3D)
一、前言 Unity3D对于鼠标操作物体的旋转、移动、缩放的功能点使用的比较多。 今天就分享如何使用Unity实现鼠标对于物体的旋转、移动、缩放。 效果图: 二、知识点 Input.GetMouseButton(0) 获取鼠标输入,参数为一个int值 为0的时候获取的是左键 Input.GetMouseButton(1) 为1的时候获取的是右键 Input.GetMouseButton(2) 为2的时候获取的是中键(就是那个滑轮) Input.GetMouseButton 鼠标按压 I
恬静的小魔龙
2022/08/07
4.3K1
鼠标控制物体旋转、移动、缩放(Unity3D)
Unity开发微信跳一跳小游戏
首先建一个3D空项目,要记住项目名称不能有中文、空格、特殊字符(别问我是怎么知道的T_T)。
叶茂林
2023/07/13
3510
Unity开发微信跳一跳小游戏
相关推荐
u3d DoTween子物体回到原位
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验