- Home /
Question by
Rabadashi · Feb 08, 2015 at 07:40 PM ·
physicscollision detection
Character Controller Platformer - Hang on to ledges
I'm making a 2.5d style platformer where the big mechanic is that you can hang on to the edges of platforms by pushing against them.
For example, If you jump and go right onto the side of a wall, and hold D or right, you hang there until you let go or jump.
I'm using a character controller - but I can't find any way to do this. Here's my code right now:
import UnityEngine
class CC_Controller (MonoBehaviour):
public speed as single = 10.0
public gravity as single = 8.0
public jumpSpeed as single = 8.0
private movey as single = 0
moveDirection as Vector3 = Vector3.zero
def OnCollisionEnter(collision as Collision) as void:
for contact as ContactPoint in collision.contacts:
localcontact = transform.InverseTransformPoint(contact.point)
if localcontact.x > 0:
if Input.GetAxis('Horizontal') > 0:
movey = 0
def Update() as void:
controller as CharacterController = GetComponent[of CharacterController]()
moveDirection = Vector3(Input.GetAxis('Horizontal'), movey, 0)
moveDirection = transform.TransformDirection(moveDirection)
moveDirection *= speed
if controller.isGrounded == true:
movey = 0
if Input.GetKeyDown('space'):
movey = jumpSpeed
if controller.collisionFlags == CollisionFlags.Above:
if movey > 0:
movey = -movey
movey -= (gravity * Time.deltaTime)
moveDirection.y = movey
controller.Move(moveDirection * Time.deltaTime)
This is my latest try using OnCollisionEnter, but that doesnt seem to do anything at all.
Is there a good way to do this?
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220613182822im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Best collision detection method? 2 Answers
How do you detect collisions in DOTS Physics? 0 Answers
How do I "remove/disable" collision? 3 Answers
I can't jump sometimes 1 Answer
Translating an object along a line until it collides with other objects 1 Answer