检测碰撞,公开变量代码之间的交互

using UnityEngine;

public class TestTrigger : MonoBehaviour
{

    private void OnTriggerEnter(Collider other)
    {
        Debug.Log("---- 碰撞! " + other.name);
    }

    private void OnTriggerStay(Collider other)
    {
        Debug.Log("---- 碰撞持续中…… " + Time.time);
    }

    private void OnTriggerExit(Collider other)
    {
        Debug.Log("==== 碰撞结束 " + other.name);
    }
}

`OnTriggerEnter(Collider other)`:

当物体进入另一个物体的碰撞器(Collider)时,这个方法会被调用。在脚本中,它会输出一条带有碰撞物体名字的调试信息,表示发生了碰撞。

`OnTriggerStay(Collider other)`:

当物体持续与另一个物体的碰撞器接触时,这个方法会被调用。在脚本中,它会输出一条带有当前时间(Time.time)的调试信息,表示碰撞持续中。

 `OnTriggerExit(Collider other)`:

当物体离开另一个物体的碰撞器时,这个方法会被调用。在脚本中,它会输出一条带有碰撞物体名字的调试信息,表示碰撞结束。


作用

检测从碰撞开始到碰撞结束的过程通常在游戏开发中非常有用,尤其是在处理互动、物理效果或其他游戏行为时。

 触发事件或行为:

从碰撞开始到结束的过程可以触发特定的事件或行为。例如,当玩家的角色进入一个触发区域时,可以开始播放特效或触发剧情事件,并在角色离开区域时结束。

 持续效果:

有些效果需要在物体之间保持碰撞时持续进行,例如伤害、治疗或持续的动画效果。在碰撞期间,定期应用这些效果,在碰撞结束时停止应用。

物体交互:

碰撞的开始和结束可以用于物体之间的互动。例如,当两个物体碰撞时,它们可以开始互相影响,如推动、连接或分离。

特效和音效:

在碰撞开始时播放特效或音效,并在碰撞结束时结束播放


关于public class

`public class` 是一个在编程中常见的用法,通常用于定义一个类(Class)并指示该类在程序中是可公开访问的。

提供的示例代码中,`public class TestTrigger` 表示定义一个名为 `TestTrigger` 的类。这个类是用来处理碰撞事件的,因为它包含了 `OnTriggerEnter`、`OnTriggerStay` 和 `OnTriggerExit` 这些方法,这些方法通常用于处理物体之间的碰撞。

而`public` 表示这个类是公开可访问的,其他部分的代码可以访问和使用这个类。这对于许多编程场景来说是很重要的,因为它允许其他部分的代码与这个类进行交互和使用它的功能。如果一个类没有被标记为 `public`,那么它只能在同一个命名空间或文件内部访问,而不能在其他部分使用。


举例

假设有一个player类的定义如下

public class Player
{
    public string playerName;
    public int playerHealth;

    public Player(string name, int health)
    {
        playerName = name;
        playerHealth = health;
    }

    public void TakeDamage(int damageAmount)
    {
        playerHealth -= damageAmount;
        Debug.Log(playerName + " took " + damageAmount + " damage. Remaining health: " + playerHealth);
    }

    public void Heal(int healAmount)
    {
        playerHealth += healAmount;
        Debug.Log(playerName + " healed for " + healAmount + " points. Current health: " + playerHealth);
    }
}

在这个例子中,Player 类有两个公开属性(playerNameplayerHealth)以及两个公开方法(TakeDamageHeal)。TakeDamage 方法用于减少玩家的健康值,Heal 方法用于增加玩家的健康值。

在游戏过程中,可以在其他脚本中创建 Player 类的实例,并与之交互,例如:

using UnityEngine;

public class GameManager : MonoBehaviour
{
    void Start()
    {
        // 创建一个新的玩家实例
        Player player = new Player("John", 100);

        // 对玩家造成伤害
        player.TakeDamage(20);

        // 治疗玩家
        player.Heal(10);
    }
}

在我的这个代码例子中,GameManager 类中的 Start 方法中创建了一个新的 Player 类的实例,名字为 "John",初始健康值为 100。然后,它调用了 TakeDamage 方法使玩家受到 20 点伤害,并调用了 Heal 方法使玩家恢复了 10 点健康值。

这就是如何通过创建公开类的实例并调用其方法,实现游戏对象之间的交互和游戏逻辑的处理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值