📜  unity 2d 运动和动画 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:05:44.360000             🧑  作者: Mango

Unity 2D 运动和动画 - C# 编程语言

Unity 是一款流行的游戏引擎,可以用 C# 编程语言制作 2D 或 3D 游戏。在 Unity 中,我们可以轻松地实现游戏对象的运动和动画效果。

1. 游戏对象运动

游戏对象的运动可以通过修改其 transform 组件的位置、旋转和缩放来实现。以下是一些实现游戏对象运动的代码片段:

移动

代码片段 1:

using UnityEngine;
using System.Collections;

public class MoveObject : MonoBehaviour {
    public float speed; // 移动速度

    void Update () {
        float h = Input.GetAxis ("Horizontal") * speed * Time.deltaTime;
        float v = Input.GetAxis ("Vertical") * speed * Time.deltaTime;
        transform.Translate (h, v, 0);
    }
}

这段代码会移动控制该脚本组件的游戏对象,并且速度可以由脚本组件在编辑器上设置。

代码片段 2:

using UnityEngine;
using System.Collections;

public class MoveObject : MonoBehaviour {
    public float speed; // 移动速度

    void FixedUpdate () {
        float h = Input.GetAxis ("Horizontal") * speed * Time.fixedDeltaTime;
        float v = Input.GetAxis ("Vertical") * speed * Time.fixedDeltaTime;
        Vector2 newPos = rb2D.position + new Vector2 (h, v);
        rb2D.MovePosition (newPos);
    }
}

这段代码使用 Rigidbody2D (刚体)组件的 MovePosition 方法来移动游戏对象。该方法可以提高移动的准确性和稳定性。

旋转

代码片段 3:

using UnityEngine;
using System.Collections;

public class RotateObject : MonoBehaviour {
    public float speed; // 旋转速度

    void Update () {
        float h = Input.GetAxis ("Horizontal") * speed * Time.deltaTime;
        float v = Input.GetAxis ("Vertical") * speed * Time.deltaTime;
        transform.Rotate (0, 0, h);
    }
}

这段代码会旋转控制该脚本组件的游戏对象,并且速度可以由脚本组件在编辑器上设置。

2. 游戏对象动画

动画效果是实现游戏对象各种状态的关键。在 Unity 中,我们可以使用 Animation 组件或者 Animator 组件来控制游戏对象的动画。

Animation 组件

代码片段 4:

using UnityEngine;
using System.Collections;

public class AnimationControl : MonoBehaviour {
    public Animation anim; // Animation 组件
    void Start () {
        anim = GetComponent<Animation>();
    }
    void Update () {
        if (Input.GetKeyDown (KeyCode.Space)) {
            anim.Play("MyAnimation"); // 播放动画
        }
    }
}

这段代码控制动画组件 anim 播放名称为 "MyAnimation" 的动画。

Animator 组件

Animator 组件提供了更多的动画功能,可以制作状态机以控制动画播放。以下是一些 Animator 组件的代码片段:

代码片段 5:

using UnityEngine;
using System.Collections;

public class AnimControl : MonoBehaviour {
    Animator anim;

    void Start () {
        anim = GetComponent<Animator>();
    }
    void Update () {
        if (Input.GetKeyDown(KeyCode.Space)) {
            anim.SetBool("Jump", true);  // 设置 Jump 参数
        }
    }
}

这段代码使用 Animator 组件播放名称为 "Jump" 的动画。

代码片段 6:

using UnityEngine;
using System.Collections;

public class AnimControl : MonoBehaviour {
    Animator animator;

    void Start () {
        animator = GetComponent<Animator>();
    }
    void Update () {
        float h = Input.GetAxis ("Horizontal");
        float v = Input.GetAxis ("Vertical");

        animator.SetFloat ("Speed", Mathf.Abs (h)); // 设置 Speed 参数
        animator.SetBool ("IsJumping", Input.GetButton("Jump")); // 设置 IsJumping 参数
    }
}

这段代码使用 Animator 组件设置两个动画参数。一个是 Speed 参数,表示移动速度;另一个是 IsJumping 参数,表示是否跳跃。

结论

通过以上的示例代码,我们可以掌握 Unity 2D 的运动和动画效果。这些技能是制作游戏必不可少的一部分。

参考资料:

  1. Unity 中文官方文档:https://docs.unity.cn/cn/2d/
  2. Unity Scripting API:https://docs.unity.cn/cn/2020.1/ScriptReference/