Unity移动,动画,音乐和常用函数...

**前言**:unity使用C#语言来做控制游戏元素的脚本,本笔录使用vs2019编译C#脚本.

一.如何移动

  1. 使用transform.position,不断改变位置以形成移动.
using UnityEngine;
public class Move : MonoBehaviour
{
    //movement speed in units per second
    private float movementSpeed = 5f;

    void Update()
    {
        //get the Input from Horizontal axis
        // 对应键盘上面的左右箭头,当按下左或右箭头时触发,按键A和D亦可
        float horizontalInput = Input.GetAxis("Horizontal");
        //get the Input from Vertical axis
        //对应键盘上面的上下箭头,当按下上或下箭头时触发,按键W和S亦可
        float verticalInput = Input.GetAxis("Vertical");

        //update the position
        transform.position = transform.position + new Vector3(horizontalInput * movementSpeed * Time.deltaTime, verticalInput * movementSpeed * Time.deltaTime, 0);

        //output to log the position change
        Debug.Log(transform.position);
    }
}
  1. 另外还可以使用transform.Translate()函数
    https://docs.unity.cn/cn/2019.4/ScriptReference/Transform.Translate.html
  2. 使用velocity为Rigidbody添加速度
    https://docs.unity.cn/cn/2019.4/ScriptReference/Rigidbody-velocity.html
  3. 使用AddForce为Rigidbody添加力
    https://docs.unity.cn/cn/2019.4/ScriptReference/Rigidbody.AddForce.html
  4. 跳跃也应属移动的一种,我们可以使用velocity或AddForce实现移动,下面以velocity为例:
using UnityEngine;
using System.Collections;
/*
*下面并不是单纯的跳跃代码,而是额外使用了OnCollisionEnter2D()来使得物体不能空中跳跃
*/
public class Velocity : MonoBehaviour
{
    public Rigidbody2D rb;
    bool Isjumping = false;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space)&& !Isjumping)
        {
            rb.velocity = new Vector3(0, 10, 0);
            Debug.Log("jumpyes");
            Isjumping = true;
        }
    }
    private void OnCollisionEnter2D(Collision2D collision)
    {
        Isjumping = false;
    }

}


二.如何控制媒体等组件

媒体

  1. 音乐开/关
//定义
public AudioSource Au;
//赋值
Au = GetComponent<AudioSource>();
//播放
Au.Play();
//暂停
Au.Stop();
  1. 动画开/关
//定义
public Animation an;
//赋值
an = GetComponent<Animation>();
//播放
an.Play();
//暂停
an.Stop();

非媒体

  1. sprite切换
//定义sprite数组
public SpriteRenderer SP;
public Sprite[] pic;
//为sprite选用pic[0];
GetComponent<SpriteRenderer>().sprite = pic[0];

三.如何改写UI中的text

  1. 时间text(int型、float型)
//定义Text
public Text timeText;
//定义时间
float timenum = 60;
//更改内容到timeText,"0"整型形式,"0.0"一位小数形式
timeText.text = timenum.ToString("0");

我们可以将其放入update中形成诸如倒计时等功能

void Update()
    {
        timenum -= Time.deltaTime;//Time.deltaTime指完成上一帧所用的时间(以秒为单位)(只读)。此属性提供当前帧和上一帧之间的时间。
        timeText.text = timenum.ToString("0");
    }
  1. 文本text(string型)
public Text Txt;
Txt.text = "内容";

四.退出程序

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;



public class OutGame : MonoBehaviour

{



    public void Quit()

    {

#if     UNITY_EDITOR

        UnityEditor.EditorApplication.isPlaying = false;//编辑状态下退出

#else

        Application.Quit();//打包编译后退出

#endif

    }

}

五.常用函数

函数名作用
DestoryImmediate()立即销毁对象
Destory()销毁对象(可以添加销毁延迟)
OnDestroy()当前脚本被销毁时调用
Input.GetKey()按下某键,持续返回true
Input.GetKeyDown按下某键的一瞬间,返回true
Input.GetKeyUp松开某键的一瞬间,返回true
Input.GetMouseButton(0)持续检测是否按鼠标左键(针对鼠标左中右键,0,1,2三个方法同)
OnMuseDown当鼠标按下
OnMouseEnter当鼠标进入
OnMuseExit当鼠标退出
OnCollisionEnter(Collision)当碰撞开始时,调用该方法一次
OnCollisionExit(Collision)当碰撞结束时,调用该方法一次
OnCollisionStay(Collision)当碰撞进行中,持续调用该方法
OnTriggerEnter(Collider)当碰撞开始时,调用该方法一次
OnTriggerExit(Collider)当碰撞结束时,调用该方法一次
OnTriggerStay(Collider)当碰撞进行中,持续调用该方法
Invoke()延时执行
LoadScene()跳转场景
DontDestroyOnLoad()切换场景不摧毁
Instantiate()克隆对象

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 移动动画脚本的写法取决于您是要在哪种平台上实现移动动画,比如Unity,iOS或Android。如果您要在Unity中实现移动动画,可以使用Unity的脚本功能来实现,可以使用C#或UnityScript语言编写脚本。 ### 回答2: 在Unity中编写移动动画脚本需要以下步骤: 1. 创建一个脚本文件,并将其添加到要移动的游戏对象上。可以使用C#或UnityScript编写脚本。 2. 在脚本中添加所需的变量,例如移动速度和目标位置。 3. 使用Update()函数来检测输入或触发条件。例如,可以使用Input.GetAxis()函数来检测玩家的输入,或者使用触发器来触发脚本。 4. 在Update()函数中,通过调用Translate()函数移动游戏对象。Translate()函数可以传入一个Vector3参数,用于设置移动方向和速度。可以使用移动速度乘以Time.deltaTime来平滑移动。 5. 使用条件语句来判断是否达到目标位置。如果达到目标位置,则停止移动。 6. 在需要播放动画的游戏对象上添加Animator组件,并创建所需的移动动画片段。 7. 在脚本中使用Animator组件的Play()函数来播放移动动画。可以使用Animator.Play()函数传入动画片段的名称。 8. 如果需要在移动过程中多次播放相同的动画片段,则需要判断当前的动画状态是否结束。可以使用Animator.GetCurrentAnimatorStateInfo()函数来获取当前动画状态的信息,并判断是否处于动画结束状态。 9. 最后,在脚本中添加所需的方法,例如将脚本附加到游戏对象、处理输入等。 总结:通过编写脚本来控制游戏对象的移动,使用条件语句来判断是否达到目标位置,并在需要的位置播放动画。使用Unity提供的函数和组件来实现移动动画效果。 ### 回答3: Unity中的移动动画脚本可以通过编写脚本来实现。下面是一个简单的示例。 首先,你需要在Unity中创建一个空物体,将其命名为"Player"。然后,在脚本控制文件夹中创建一个新的C#脚本,命名为"PlayerMovement"。 打开"PlayerMovement"脚本,开始编写代码。首先,你需要引入Unity的命名空间: ``` using UnityEngine; ``` 然后,在脚本类之前声明一个public变量,用于控制移动速度: ``` public float moveSpeed = 5f; ``` 接下来,在Update函数中编写代码来实现移动。以下是一个基础的移动代码: ``` void Update() { // 获取玩家输入 float moveX = Input.GetAxis("Horizontal"); float moveZ = Input.GetAxis("Vertical"); // 计算移动向量 Vector3 movement = new Vector3(moveX, 0f, moveZ); // 根据移动速度进行移动 transform.position += movement * moveSpeed * Time.deltaTime; } ``` 这段代码首先获取玩家的输入,然后根据输入计算出一个移动向量。接下来,通过改变物体的位置来实现移动移动速度通过乘以移动向量和Time.deltaTime来控制。 最后,在Unity中将"PlayerMovement"脚本附加到"Player"物体上。这样,当游戏运行时,"Player"物体将根据玩家的输入进行移动。 当然,这只是一个简单的示例,你可以根据具体的需求来扩展和修改这个脚本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值