so i have a terrain editing script, with the intention to target part of the ground near the player, raise it and if it’s close enough to the player, lift him with it aswell
i also have a script that spawns rock onto the edited terrain, for a better effect
my only problem is that rather than lifting the player, he falls through the terrain when he collides with nearby edited terrain
any idea how i can fix this? i was thinking of giving the rocks some script to teleport the player up when he collides, but when i tried it didn’t work
here’s the main terrain editing script im using
using UnityEngine;
using System.Collections;
public class TerrainEdit : MonoBehaviour
{
public Terrain myTerrain;
int xResolution;
int zResolution;
float[,] heights;
void Start()
{
xResolution = myTerrain.terrainData.heightmapWidth;
zResolution = myTerrain.terrainData.heightmapHeight;
heights = myTerrain.terrainData.GetHeights(0,0,xResolution,zResolution);
}
void Update()
{
if(Input.GetMouseButton(1))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit))
{
raiseTerrain(hit.point);
}
}
}
private void raiseTerrain(Vector3 point)
{
int terX =(int)((point.x / myTerrain.terrainData.size.x) * xResolution);
int terZ =(int)((point.z / myTerrain.terrainData.size.z) * zResolution);
float y = heights[terX,terZ];
y += 0.001f;
float[,] height = new float[1,1];
height[0,0] = y;
heights[terX,terZ] = y;
myTerrain.terrainData.SetHeights(terX, terZ, height);
}
}
note: i lowered the ammount of terrain that gets lifted up, and my original idea to lift the player works as long as he’s moving backwards