首页 > 编程知识 正文

unity destroy,unity2d

时间:2023-05-06 13:44:54 阅读:106334 作者:309

第一个应用:如何使用网格渲染器Blend Shapes Unity制作木棒剥皮1、内含子

2、打开modeling(Blender ) blender软件

调整视角

还有快捷键: Shift A

添加消息:循环程序

将顶点数更改为:

Rotate Around X Axis :快捷键R X 90

Scale :Y Axis :快捷键S Y

进入Edit Mode :快捷键Tab

通过更改Add more Loops :快捷方式Ctrl R鼠标滚轮,可以看到水平线条的变化。

下图的横线都是新添加的。

_

Right click to undo movements

Exit Edit Mode :快捷键Tab

添加形状密钥

进入Edit Mode,选择Alt横线,按快捷键S 0,即可完成一个关键帧。

重复n次,增加所有横线key

然后单击“File”导出FBX文件。

然后导入到Unity项目中。

3、设置场景创建空对象捕捉、Wood Holder、Wood,然后拖动模型进行吊装

然后调整模型的旋转,您还会发现添加到Blender的Shape keys在Unity中具有数据。 可以在Inspector中更改key的值,以查看scene中模型的变化。

替换为类似木头的材质:伍德

场景需要加入另一个物体。 包括刀具Knife、碰撞体和刚体(参数设置,例如限制运动方向)以及控制脚本Knife.cs

4、woodrotation(dotween )添加第一个脚本Wood.cs先旋转树

using UnityEngine; using DG.Tweening; 公共类wood : mono behaviour { [ serialize field ] privateskinnedmeshrendererskinnedmeshrenderer; [ serialize field ] privatetransformwoodtransform; [ serialize field ] private vector3rotation vector; [ serialize field ]权限; privatevoidstart ((wood transform.dolocalrotate (rotation vector,rotationDuration,RotateMode.FastBeyond360 ) ).setl lid //skinnedmeshrendererkey ' svalueisclampedbetween 0100 floatnewweight=skinnedmeshrenderer.getblendshapeweight (key index ) skinnedmeshrenderer.setblendshapeweight (key index,newWeight ); }在运行中旋转。

5、Knife Movement添加脚本Knife.cs移动刀片

using UnityEngine; public class knife : mono behaviour { [ serialize field ] privatefloatmovementspeed; [ serialize field ]权限; [SerializeField] private Woo

d wood ; [SerializeField] private ParticleSystem woodFx ; private ParticleSystem.EmissionModule woodFxEmission ; private Rigidbody knifeRb ; private Vector3 movementVector ; private bool isMoving = false ; private void Start () { knifeRb = GetComponent<Rigidbody> () ; woodFxEmission = woodFx.emission ; } private void Update () { isMoving = Input.GetMouseButton (0) ; if (isMoving) movementVector = new Vector3 (Input.GetAxis ("Mouse X"), Input.GetAxis ("Mouse Y"), 0f) * movementSpeed * Time.deltaTime ; } private void FixedUpdate () { if (isMoving) knifeRb.position += movementVector ; } private void OnCollisionExit (Collision collision) { woodFxEmission.enabled = false ; } private void OnCollisionStay (Collision collision) { Coll coll = collision.collider.GetComponent <Coll> () ; if (coll != null) { // hit Collider: woodFxEmission.enabled = true ; woodFx.transform.position = collision.contacts [ 0 ].point ; coll.HitCollider (hitDamage) ; wood.Hit (coll.index, hitDamage) ; } }}

 

6、Colliders

 

添加碰撞体:

先调整参数,这样可以确定每个key的位置

为每个碰撞体添加脚本 Coll.cs  

using UnityEngine ;public class Coll : MonoBehaviour { public int index ; BoxCollider boxCollider ; private void Awake () { boxCollider = GetComponent<BoxCollider> () ; index = transform.GetSiblingIndex () ; } public void HitCollider (float damage) { // Resize the collider's height(Y) depends on "damage" if (boxCollider.size.y - damage > 0.0f) boxCollider.size = new Vector3 (boxCollider.size.x, boxCollider.size.y - damage, boxCollider.size.z) ; else Destroy (this) ; // Remove Coll Component from this gameobject }}

 

7、Wood Deformation (Skinned Mesh Renderer)

Wood.cs  中     更改指定key的权重来达到木头的削皮

public void Hit (int keyIndex, float damage) { float colliderHeight = 2.39705f ; // 编辑器时碰撞体的size的y值 //Skinned mesh renderer key's value is clamped between 0 & 100 float newWeight = skinnedMeshRenderer.GetBlendShapeWeight (keyIndex) + damage * (100f / colliderHeight) ; skinnedMeshRenderer.SetBlendShapeWeight (keyIndex, newWeight) ; }

Knife.cs 中   削刀跟key碰撞体 碰撞就改变指定的key的权重

private void OnCollisionExit (Collision collision) { woodFxEmission.enabled = false ; } private void OnCollisionStay (Collision collision) { Coll coll = collision.collider.GetComponent <Coll> () ; if (coll != null) { // hit Collider: woodFxEmission.enabled = true ; woodFx.transform.position = collision.contacts [ 0 ].point ; coll.HitCollider (hitDamage) ; wood.Hit (coll.index, hitDamage) ; } }

 

 

8、Wood Fx (Particle System)

这个就没什么可说的,特效一直都在,只是在碰撞的时候开启particle system,同时改变特效的位置。脱离碰撞就关闭。

 

 

 

第二个应用:树的出现动画

 

添加一个cube:

然后添加水平跟垂直的边缘循环。

 

然后增加  Shape Keys  : Base ,  key 1   把Cube 调整成树的形状。

 

编辑完  可以通过改变 Value 条来看效果,也有Misc参数可以调整。

就是从cube   key成这样:

然后退出编辑模式,  为Cube 添加简单的纹理

 

然后将文件从Blender中导出 .fbx文件, 导入到Unity中

托转到场景中可是改变值看看效果:

添加如下控制脚本 ,作为数目的出生动画 :

 

 

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。