You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity开发:碰撞立方体后如何增大玩家球体尺寸及调整相机距离

实现球体增大与相机距离调整的方案

一、增大球体尺寸

在立方体的碰撞触发逻辑中,直接修改玩家球体的localScale属性即可,注意保持三个轴缩放一致,避免球体变形:

修改你的increasingPoints脚本,在碰撞逻辑里添加缩放代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class increasingPoints : MonoBehaviour
{
    // 每次碰撞的缩放比例,可在Inspector面板调整
    public float scaleMultiplier = 1.1f;

    void OnCollisionEnter(Collision collision)
    {
        if(collision.transform.name == "MyPlayer")
        {
            score.Score += 10;
            Debug.Log("Ball Collided");
            
            // 获取玩家球体的Transform组件
            Transform playerTransform = collision.transform;
            // 按比例放大球体,三个轴同步缩放避免变形
            playerTransform.localScale *= scaleMultiplier;
            
            Destroy(gameObject);
        }
    }
}
  • 若想固定增加尺寸(比如每次加0.1),可将缩放代码改为:playerTransform.localScale += new Vector3(0.1f, 0.1f, 0.1f);
  • 球体的SphereCollider会自动跟随Scale变化,无需额外调整物理参数。

二、调整相机与球体的距离

提供两种实用的实现方式,根据你的相机跟随逻辑选择:

方式1:直接调整相机相对位置

如果相机是固定偏移跟随球体(比如初始在球体后上方),可在球体缩放时同步放大相机偏移量:

// 在上述OnCollisionEnter的碰撞逻辑中添加以下代码
// 获取主相机
Camera mainCamera = Camera.main;
// 计算相机相对于球体的当前偏移
Vector3 cameraOffset = mainCamera.transform.position - playerTransform.position;
// 按球体缩放比例放大偏移量
cameraOffset *= scaleMultiplier;
// 更新相机位置
mainCamera.transform.position = playerTransform.position + cameraOffset;

方式2:使用动态跟随脚本(更灵活)

如果相机已有跟随脚本,修改脚本让偏移量随球体缩放动态调整:

using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    public Transform target;
    // 初始偏移量,在Inspector中设置好初始跟随位置
    public Vector3 initialOffset;
    // 存储球体初始缩放值
    private Vector3 initialPlayerScale;

    void Start()
    {
        if(target != null)
        {
            initialPlayerScale = target.localScale;
            // 初始化相机位置
            transform.position = target.position + initialOffset;
        }
    }

    void LateUpdate()
    {
        if(target == null) return;
        
        // 计算当前缩放比例
        float scaleRatio = target.localScale.x / initialPlayerScale.x;
        // 按比例调整偏移量
        Vector3 currentOffset = initialOffset * scaleRatio;
        // 更新相机位置
        transform.position = target.position + currentOffset;
        // 保持相机看向球体
        transform.LookAt(target);
    }
}
  • 使用时将脚本挂在相机上,把玩家球体拖到target字段,在Scene视图调整相机到合适位置后,复制相机相对球体的位置到initialOffset字段即可。

内容的提问来源于stack exchange,提问作者Mark Lawrence

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:36:18